@@ -12,8 +12,15 @@ static const size_t dummyWidth = 1920;
12
12
static const size_t dummyHeight = 1080 ;
13
13
static const std::string dummyPixelFormat = " yuv420p" ;
14
14
static const std::string dummyVideoCodec = " mpeg2video" ;
15
+
16
+ static const size_t dummySampleRate = 48000 ;
17
+ static const size_t dummyChannels = 1 ;
18
+ static const std::string dummySampleFormat = " s16" ;
15
19
static const std::string dummyAudioCodec = " pcm_s16le" ;
16
20
21
+ static bool useVideoGenerator = false ;
22
+ static bool useAudioGenerator = false ;
23
+
17
24
bool verbose = false ;
18
25
19
26
void parseConfigFile ( const std::string& configFilename, avtranscoder::Transcoder& transcoder )
@@ -56,12 +63,24 @@ void parseConfigFile( const std::string& configFilename, avtranscoder::Transcode
56
63
// dummy stream, need a ICodec (audio or video)
57
64
if ( ! filename.length () )
58
65
{
59
- // video
60
- avtranscoder::VideoCodec inputVideoCodec ( avtranscoder::eCodecTypeEncoder, dummyVideoCodec );
61
- avtranscoder::VideoFrameDesc imageDesc ( dummyWidth, dummyHeight, dummyPixelFormat );
62
- inputVideoCodec.setImageParameters ( imageDesc );
63
-
64
- transcoder.add ( filename, streamIndex, subStreamIndex, transcodeProfile, inputVideoCodec );
66
+ if ( useVideoGenerator )
67
+ {
68
+ // video
69
+ avtranscoder::VideoCodec inputCodec ( avtranscoder::eCodecTypeEncoder, dummyVideoCodec );
70
+ avtranscoder::VideoFrameDesc imageDesc ( dummyWidth, dummyHeight, dummyPixelFormat );
71
+ inputCodec.setImageParameters ( imageDesc );
72
+
73
+ transcoder.add ( filename, streamIndex, subStreamIndex, transcodeProfile, inputCodec );
74
+ }
75
+ else
76
+ {
77
+ // audio
78
+ avtranscoder::AudioCodec inputCodec ( avtranscoder::eCodecTypeEncoder, dummyAudioCodec );
79
+ avtranscoder::AudioFrameDesc audioDesc ( dummySampleRate, dummyChannels, dummySampleFormat );
80
+ inputCodec.setAudioParameters ( audioDesc );
81
+
82
+ transcoder.add ( filename, streamIndex, subStreamIndex, transcodeProfile, inputCodec );
83
+ }
65
84
}
66
85
else
67
86
{
@@ -76,14 +95,30 @@ void parseConfigFile( const std::string& configFilename, avtranscoder::Transcode
76
95
77
96
int main ( int argc, char ** argv )
78
97
{
79
- if ( argc != 3 )
98
+ if ( argc < 3 )
80
99
{
81
100
std::cout << " avprocessor require an input config file and an output media filename" << std::endl;
82
101
return ( -1 );
83
102
}
84
103
85
- av_log_set_level ( AV_LOG_FATAL );
104
+ std::vector< std::string > arguments;
105
+ for ( int argument = 1 ; argument < argc; ++argument )
106
+ {
107
+ arguments.push_back ( argv[argument] );
108
+ }
109
+ for ( size_t argument = 0 ; argument < arguments.size (); ++argument )
110
+ {
111
+ if ( arguments.at ( argument ) == " --generate-black" )
112
+ {
113
+ useVideoGenerator = true ;
114
+ }
115
+ else if ( arguments.at ( argument ) == " --generate-silence" )
116
+ {
117
+ useAudioGenerator = true ;
118
+ }
119
+ }
86
120
121
+ av_log_set_level ( AV_LOG_FATAL );
87
122
if ( verbose )
88
123
av_log_set_level ( AV_LOG_DEBUG );
89
124
0 commit comments