Skip to content

Commit d746d76

Browse files
author
Clement Champetier
committed
avplay app: split AvReader file to hpp/cpp
1 parent 8e93471 commit d746d76

File tree

3 files changed

+97
-83
lines changed

3 files changed

+97
-83
lines changed

app/avPlay/AvReader.cpp

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#include "AvReader.hpp"
2+
3+
#include <AvTranscoder/progress/NoDisplayProgress.hpp>
4+
#include <AvTranscoder/mediaProperty/print.hpp>
5+
6+
AvReader::AvReader( const std::string& filename )
7+
: _inputFile( filename )
8+
, _inputVideo( NULL )
9+
, _sourceImage( NULL )
10+
, _imageToDisplay( NULL )
11+
, _videoTransform()
12+
, _videoStream( 0 )
13+
{
14+
avtranscoder::NoDisplayProgress p;
15+
_inputFile.analyse( p );
16+
_videoStream = _inputFile.getProperties().getVideoProperties().at(0).getStreamId();
17+
_inputFile.activateStream( _videoStream );
18+
19+
_inputVideo = new avtranscoder::VideoDecoder( _inputFile.getStream( _videoStream ) );
20+
_inputVideo->setup();
21+
22+
_sourceImage = new avtranscoder::VideoFrame( _inputFile.getStream( _videoStream ).getVideoCodec().getVideoFrameDesc() );
23+
24+
avtranscoder::VideoFrameDesc videoFrameDescToDisplay( _sourceImage->desc().getWidth(), _sourceImage->desc().getHeight(), "rgb24" );
25+
_imageToDisplay = new avtranscoder::VideoFrame( videoFrameDescToDisplay );
26+
}
27+
28+
AvReader::~AvReader()
29+
{
30+
delete _inputVideo;
31+
delete _sourceImage;
32+
delete _imageToDisplay;
33+
}
34+
35+
size_t AvReader::getWidth()
36+
{
37+
return _inputFile.getProperties().getVideoProperties().at(0).getWidth();
38+
};
39+
40+
size_t AvReader::getHeight()
41+
{
42+
return _inputFile.getProperties().getVideoProperties().at(0).getHeight();
43+
}
44+
45+
size_t AvReader::getComponents()
46+
{
47+
return _inputFile.getProperties().getVideoProperties().at(0).getPixelProperties().getNbComponents();
48+
}
49+
50+
size_t AvReader::getBitDepth()
51+
{
52+
return _inputFile.getProperties().getVideoProperties().at(0).getPixelProperties().getBitsPerPixel();
53+
}
54+
55+
AVPixelFormat AvReader::getPixelFormat()
56+
{
57+
return _inputFile.getProperties().getVideoProperties().at(0).getPixelProperties().getAVPixelFormat();
58+
}
59+
60+
const char* AvReader::readNextFrame()
61+
{
62+
++_currentFrame;
63+
_inputVideo->decodeNextFrame( *_sourceImage );
64+
_videoTransform.convert( *_sourceImage, *_imageToDisplay );
65+
return (const char*)_imageToDisplay->getPtr();
66+
}
67+
68+
const char* AvReader::readPrevFrame()
69+
{
70+
--_currentFrame;
71+
return readFrameAt( _currentFrame );
72+
}
73+
74+
const char* AvReader::readFrameAt( const size_t frame )
75+
{
76+
// /std::cout << "seek at " << frame << std::endl;
77+
_inputFile.seekAtFrame( frame );
78+
_inputVideo->flushDecoder();
79+
return readNextFrame();
80+
}
81+
82+
void AvReader::printMetadatas()
83+
{
84+
std::cout << _inputFile << std::endl;
85+
}

app/avPlay/AvReader.hpp

Lines changed: 12 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -2,97 +2,29 @@
22
#define _AVPLAYER_AVREADER_
33

44
#include <AvTranscoder/file/InputFile.hpp>
5-
#include <AvTranscoder/progress/ConsoleProgress.hpp>
6-
#include <AvTranscoder/mediaProperty/print.hpp>
7-
85
#include <AvTranscoder/decoder/VideoDecoder.hpp>
9-
6+
#include <AvTranscoder/frame/VideoFrame.hpp>
107
#include <AvTranscoder/transform/VideoTransform.hpp>
118

129
#include "Reader.hpp"
1310

1411
class AvReader : public Reader
1512
{
1613
public:
17-
AvReader( const std::string& filename )
18-
: _inputFile( filename )
19-
, _inputVideo( NULL )
20-
, _sourceImage( NULL )
21-
, _imageToDisplay( NULL )
22-
{
23-
avtranscoder::ConsoleProgress p;
24-
25-
_inputFile.analyse( p );
26-
_videoStream = _inputFile.getProperties().getVideoProperties().at(0).getStreamId();
27-
_inputFile.activateStream( _videoStream );
28-
29-
_inputVideo = new avtranscoder::VideoDecoder( _inputFile.getStream( _videoStream ) );
30-
_inputVideo->setup();
31-
32-
_sourceImage = new avtranscoder::VideoFrame( _inputFile.getStream( _videoStream ).getVideoCodec().getVideoFrameDesc() );
33-
34-
avtranscoder::VideoFrameDesc videoFrameDescToDisplay( _sourceImage->desc().getWidth(), _sourceImage->desc().getHeight(), "rgb24" );
35-
_imageToDisplay = new avtranscoder::VideoFrame( videoFrameDescToDisplay );
36-
}
37-
38-
~AvReader()
39-
{
40-
delete _inputVideo;
41-
delete _sourceImage;
42-
delete _imageToDisplay;
43-
}
44-
45-
size_t getWidth()
46-
{
47-
return _inputFile.getProperties().getVideoProperties().at(0).getWidth();
48-
};
49-
50-
size_t getHeight()
51-
{
52-
return _inputFile.getProperties().getVideoProperties().at(0).getHeight();
53-
}
54-
55-
size_t getComponents()
56-
{
57-
return _inputFile.getProperties().getVideoProperties().at(0).getPixelProperties().getNbComponents();
58-
}
59-
60-
size_t getBitDepth()
61-
{
62-
return _inputFile.getProperties().getVideoProperties().at(0).getPixelProperties().getBitsPerPixel();
63-
}
64-
65-
AVPixelFormat getPixelFormat()
66-
{
67-
return _inputFile.getProperties().getVideoProperties().at(0).getPixelProperties().getAVPixelFormat();
68-
}
69-
70-
const char* readNextFrame()
71-
{
72-
++_currentFrame;
73-
_inputVideo->decodeNextFrame( *_sourceImage );
74-
_videoTransform.convert( *_sourceImage, *_imageToDisplay );
75-
return (const char*)_imageToDisplay->getPtr();
76-
}
14+
AvReader( const std::string& filename );
15+
~AvReader();
7716

78-
const char* readPrevFrame()
79-
{
80-
--_currentFrame;
81-
return readFrameAt( _currentFrame );
82-
}
17+
size_t getWidth();
18+
size_t getHeight();
19+
size_t getComponents();
20+
size_t getBitDepth();
21+
AVPixelFormat getPixelFormat();
8322

84-
const char* readFrameAt( const size_t frame )
85-
{
86-
// /std::cout << "seek at " << frame << std::endl;
87-
_inputFile.seekAtFrame( frame );
88-
_inputVideo->flushDecoder();
89-
return readNextFrame();
90-
}
23+
const char* readNextFrame();
24+
const char* readPrevFrame();
25+
const char* readFrameAt( const size_t frame );
9126

92-
void printMetadatas()
93-
{
94-
std::cout << _inputFile << std::endl;
95-
}
27+
void printMetadatas();
9628

9729
private:
9830
avtranscoder::InputFile _inputFile;

app/avPlay/main.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
2-
#include <iostream>
3-
41
#include "AvReader.hpp"
52
#include "Window.hpp"
63

0 commit comments

Comments
 (0)