AvTranscoder  0.9.4
C++APIforLibav/FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
VideoReader.cpp
Go to the documentation of this file.
1 #include "VideoReader.hpp"
2 
8 
9 namespace avtranscoder
10 {
11 
12 VideoReader::VideoReader(const std::string& filename, const size_t videoStreamIndex)
13  : IReader(filename, videoStreamIndex)
14  , _videoStreamProperties(NULL)
15  , _outputWidth(0)
16  , _outputHeight(0)
17  , _outputPixelProperties("rgb24")
18 {
19  init();
20 }
21 
22 VideoReader::VideoReader(InputFile& inputFile, const size_t videoStreamIndex)
23  : IReader(inputFile, videoStreamIndex)
24  , _videoStreamProperties(NULL)
25  , _outputWidth(0)
26  , _outputHeight(0)
27  , _outputPixelProperties("rgb24")
28 {
29  init();
30 }
31 
33 {
34  // analyse InputFile
36  _inputFile->analyse(p);
40 
41  // setup decoder
45 
46  // generator
48 
49  // create transform
50  _transform = new VideoTransform();
51 
52  // create src frame
54  VideoFrame* srcFrame = static_cast<VideoFrame*>(_srcFrame);
55  // create dst frame
56  _outputWidth = srcFrame->getWidth();
57  _outputHeight = srcFrame->getHeight();
59 }
60 
62 {
63  delete _decoder;
64  delete _generator;
65  delete _srcFrame;
66  delete _dstFrame;
67  delete _transform;
68 }
69 
70 void VideoReader::updateOutput(const size_t width, const size_t height, const std::string& pixelFormat)
71 {
72  _outputWidth = width;
73  _outputHeight = height;
75  // update dst frame
76  delete _dstFrame;
78 }
79 }
IDecoder * _generator
Definition: IReader.hpp:70
Description to create a video frame.
Definition: VideoFrame.hpp:21
This class describes decoded video data.
Definition: VideoFrame.hpp:43
IDecoder * _decoder
Definition: IReader.hpp:69
const VideoProperties * _videoStreamProperties
Properties of the source video stream read (no ownership, has link)
Definition: VideoReader.hpp:47
void analyse(IProgress &progress, const EAnalyseLevel level=eAnalyseLevelFirstGop)
Run the analyse on the file after a setup. call this function before getProperties().
Definition: InputFile.cpp:51
PixelProperties _outputPixelProperties
Definition: VideoReader.hpp:53
Based class to read a stream.
Definition: IReader.hpp:18
VideoReader(const std::string &filename, const size_t videoStreamIndex=0)
Definition: VideoReader.cpp:12
const avtranscoder::StreamProperties & getStreamPropertiesWithIndex(const size_t streamIndex) const
virtual void setupDecoder(const ProfileLoader::Profile &profile=ProfileLoader::Profile())
Setup the decoder.
Definition: IDecoder.hpp:21
void activateStream(const size_t streamIndex, const bool activate=true)
Activate the indicated stream.
Definition: InputFile.cpp:108
const FileProperties & getProperties() const
Return media properties on the current InputFile.
Definition: InputFile.hpp:71
InputFile * _inputFile
Definition: IReader.hpp:67
AVPixelFormat getOutputPixelFormat() const
Definition: VideoReader.hpp:37
ITransform * _transform
Definition: IReader.hpp:76
const StreamProperties * _streamProperties
Definition: IReader.hpp:68
VideoCodec & getVideoCodec()
Definition: InputStream.cpp:75
VideoFrameDesc getVideoFrameDesc() const
Definition: VideoCodec.cpp:24
void updateOutput(const size_t width, const size_t height, const std::string &pixelFormat)
Update width, height and pixelFormat of the output.
Definition: VideoReader.cpp:70
InputStream & getStream(size_t index)
Get stream type: video, audio, subtitle, etc.
Definition: InputFile.cpp:113
IDecoder * _currentDecoder
Link to _inputDecoder or _generator.
Definition: IReader.hpp:71
Implementation of IProgress, to manage cases when we need an IProgress but don't care of a progress b...