8
8
#include < AvTranscoder/OutputStream.hpp>
9
9
#include < AvTranscoder/OutputStreamAudio.hpp>
10
10
#include < AvTranscoder/OutputStreamVideo.hpp>
11
+ #include < AvTranscoder/InputFile.hpp>
11
12
#include < AvTranscoder/OutputFile.hpp>
12
13
13
14
#include < AvTranscoder/ColorTransform.hpp>
14
15
15
- #include < AvTranscoder/DatasStructures/VideoStream .hpp>
16
+ #include < AvTranscoder/DatasStructures/VideoDesc .hpp>
16
17
#include < AvTranscoder/DatasStructures/Image.hpp>
17
18
18
19
void displayMetadatas ( const char * filename )
@@ -53,7 +54,8 @@ void displayMetadatas( const char* filename )
53
54
std::cout << " display aspect ratio : " << input.getProperties ().videoStreams .at (videoStreamIndex).dar .num << " /" <<
54
55
input.getProperties ().videoStreams .at (videoStreamIndex).dar .den << std::endl;
55
56
std::cout << " pixel type : " << input.getProperties ().videoStreams .at (videoStreamIndex).pixelName << std::endl;
56
- std::cout << " number of components : " << input.getProperties ().videoStreams .at (videoStreamIndex).componentsCount << std::endl;
57
+
58
+ std::cout << " bit rate : " << input.getProperties ().videoStreams .at (videoStreamIndex).bitRate << std::endl;
57
59
58
60
std::cout << " color transfert : " << input.getProperties ().videoStreams .at (videoStreamIndex).colorTransfert << std::endl;
59
61
std::cout << " colorspace : " << input.getProperties ().videoStreams .at (videoStreamIndex).colorspace << std::endl;
@@ -118,7 +120,7 @@ void transcodeVideo( const char* inputfilename, const char* outputFilename )
118
120
// init video & audio encoders
119
121
OutputStreamVideo outputStreamVideo;
120
122
121
- VideoStream& videoStream = outputStreamVideo.getVideoDesc ();
123
+ VideoDesc& videoDesc = outputStreamVideo.getVideoDesc ();
122
124
123
125
Pixel oPixel;
124
126
@@ -132,22 +134,22 @@ void transcodeVideo( const char* inputfilename, const char* outputFilename )
132
134
133
135
Image sourceImage ( imageDesc );
134
136
135
- videoStream .setVideoCodec ( " dnxhd" );
136
- videoStream .set ( " b" , 120000000 );
137
+ videoDesc .setVideoCodec ( " dnxhd" );
138
+ videoDesc .set ( " b" , 120000000 );
137
139
try
138
140
{
139
- videoStream .set ( " unknownParameter" , 120000000 );
141
+ videoDesc .set ( " unknownParameter" , 120000000 );
140
142
}
141
143
catch ( const std::exception& e )
142
144
{
143
145
std::cout << " [ERROR] " << e.what () << std::endl;
144
146
}
145
147
146
- videoStream .setTimeBase ( 1 , 25 ); // 25 fps
148
+ videoDesc .setTimeBase ( 1 , 25 ); // 25 fps
147
149
148
- videoStream. setParametersFromImage ( sourceImage );
150
+ videoDesc. setImageParameters ( sourceImage );
149
151
150
- // videoStream .initCodecContext();
152
+ // videoDesc .initCodecContext();
151
153
152
154
if ( !outputStreamVideo.setup ( ) )
153
155
{
@@ -173,7 +175,10 @@ void transcodeVideo( const char* inputfilename, const char* outputFilename )
173
175
exit ( -1 );
174
176
}
175
177
176
- if ( ! of.addVideoStream () )
178
+ InputFile inputFile ( inputfilename );
179
+ inputFile.setup ();
180
+
181
+ if ( ! of.addVideoStream ( inputFile.getVideoDesc ( 0 ) ) )
177
182
{
178
183
std::cout << " error during adding output video stream" << std::endl;
179
184
exit ( -1 );
@@ -198,34 +203,21 @@ void transcodeVideo( const char* inputfilename, const char* outputFilename )
198
203
// Encodage/transcodage
199
204
std::cout << " start transcoding" << std::endl;
200
205
201
- for ( size_t count = 0 ; count < 10 ; ++count )
206
+ size_t frame = 0 ;
207
+
208
+ while ( inputStreamVideo.readNextFrame ( sourceImage ) )
202
209
{
203
- inputStreamVideo. readNextFrame ( sourceImage ) ;
210
+ std::cout << " \r process frame " << frame << std::flush ;
204
211
205
212
ct.convert ( sourceImage, imageToEncode );
206
- std::cout << " encode" << std::endl;
207
- outputStreamVideo.encodeFrame ( imageToEncode, codedImage );
208
- // std::cout << "decoded size " << frameBuffer.size() << " encode frame " << count << " size " << codedImage.size() << std::endl;
209
- std::cout << " wrap" << std::endl;
210
- of.wrap ( codedImage, 0 );
211
- }
212
-
213
213
214
- // for( size_t frame : dVideo.framesCount() )
215
- {
216
- // read & decode source image,
217
- // send it to encoder which wraps it automatically
218
- // eVideo.encode( /* raw data */ dVideo.readNextFrame() );
219
- // eVideo.write()
220
-
221
- // also to access to decoded data image
222
- // dVideo.getDataFrame();
214
+ outputStreamVideo.encodeFrame ( imageToEncode, codedImage );
223
215
216
+ of.wrap ( codedImage, 0 );
224
217
225
- // wrapper.write( /* char */ myRawData, streamIndex ) ;
218
+ ++frame ;
226
219
}
227
-
228
- // eAudioLeft.encode( );
220
+ std::cout << std::endl;
229
221
}
230
222
231
223
int main ( int argc, char ** argv )
@@ -238,7 +230,6 @@ int main( int argc, char** argv )
238
230
239
231
std::cout << " start ..." << std::endl;
240
232
241
-
242
233
// a simply metadata getter
243
234
displayMetadatas ( argv[1 ] );
244
235
0 commit comments