*****************************************************************************/
+#define MUXERS_NUMBER 9
+
+// Do not count dummy here !
+#define VCODECS_NUMBER 13
+#define ACODECS_NUMBER 9
+
#define MUX_PS 0
#define MUX_TS 1
#define MUX_MPEG 2
#define MUX_AVI 6
#define MUX_MP4 7
#define MUX_MOV 8
+#define MUX_WAV 9
/* Muxer / Codecs / Access_out compatibility tables */
char *psz_display;
char *psz_codec;
char *psz_descr;
- int muxers[9];
+ int muxers[MUXERS_NUMBER];
};
static struct codec vcodecs_array[] =
{
{ "MPEG-1 Video" , "mp1v" , N_("MPEG-1 Video codec"),
- {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_AVI, MUX_RAW, -1,-1,-1 } },
+// {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_AVI, MUX_RAW, -1,-1,-1 } },
+ {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_RAW, -1,-1,-1,-1 } },
{ "MPEG-2 Video" , "mp2v" , N_("MPEG-2 Video codec"),
- {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_AVI, MUX_RAW, -1,-1,-1 } },
+// {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_AVI, MUX_RAW, -1,-1,-1 } },
+ {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_RAW, -1,-1,-1,-1 } },
{ "MPEG-4 Video" , "mp4v" , N_("MPEG-4 Video codec"),
- {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_AVI,MUX_RAW, -1} },
+// {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_AVI,MUX_RAW, -1} },
+ {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_RAW, -1,-1} },
{ "DIVX 1" ,"DIV1",N_("DivX first version") ,
- {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
+// {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
+ {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
{ "DIVX 2" ,"DIV2",N_("DivX second version") ,
- {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
+ {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
{ "DIVX 3" ,"DIV3",N_("DivX third version") ,
- {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
+ {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
{ "H 263" , "H263" , N_("H263 is a video codec optimized for videoconference (low rates)") ,
{ MUX_TS, MUX_AVI, -1,-1,-1,-1,-1,-1,-1 } },
+ { "H 264" , "H264" , N_("H264 is a new video codec") ,
+ { MUX_TS, MUX_AVI, -1,-1,-1,-1,-1,-1,-1 } },
{ "I 263", "I263", N_("I263 is an Intel conferencing codec") ,
{ MUX_TS, MUX_AVI, -1,-1,-1,-1,-1,-1,-1 } },
{ "WMV 1" , "WMV1", N_("WMV (Windows Media Video) 1") ,
- {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
+ {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
{ "WMV 2" , "WMV2", N_("WMV (Windows Media Video) 2") ,
- {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
+ {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
{ "MJPEG" , "MJPG", N_("MJPEG consists of a series of JPEG pictures") ,
- {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
+ {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
{ "Theora" , "theo", N_("Theora is a free general-purpose codec"),
{MUX_TS, -1,-1,-1,-1,-1,-1,-1,-1} },
{ "Dummy", "dummy", N_("Dummy codec (do not transcode)") ,
- {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_AVI,MUX_RAW,MUX_MOV}},
+ {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_WAV,MUX_RAW,MUX_MOV}},
{ NULL,NULL,NULL , {-1,-1,-1,-1,-1,-1,-1,-1,-1}} /* Do not remove me */
};
static struct codec acodecs_array[] =
{
{ "MPEG Audio" , "mpga" , N_("The standard MPEG audio (1/2) format") ,
- {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
+// {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
+ {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_RAW, -1,-1,-1} },
{ "MP3" , "mp3" , N_("MPEG Audio Layer 3") ,
- {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
+// {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
+ {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_RAW, -1,-1, -1} },
{ "MPEG 4 Audio" , "mp4a" , N_("Audio format for MPEG4") ,
{MUX_TS, MUX_MP4, -1,-1,-1,-1,-1,-1,-1 } },
{ "A/52" , "a52" , N_("DVD audio format") ,
- {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
+// {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
+ {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_RAW, -1,-1,-1} },
{ "Vorbis" , "vorb" , N_("Vorbis is a free audio codec") ,
{MUX_OGG, -1,-1,-1,-1,-1,-1,-1,-1} },
{ "FLAC" , "flac" , N_("FLAC is a lossless audio codec") ,
{MUX_OGG , MUX_RAW, -1,-1,-1,-1,-1,-1,-1} },
{ "Speex" , "spx" , N_("A free audio codec dedicated to compression of voice") ,
{MUX_OGG, -1,-1,-1,-1,-1,-1,-1,-1} },
+ { "Uncompressed, integer" , "s16l" , N_("Uncompressed audio samples"),
+ {MUX_WAV, -1,-1,-1,-1,-1,-1,-1,-1} },
+ { "Uncompressed, floating" , "fl32" , N_("Uncompressed audio samples"),
+ {MUX_WAV, -1,-1,-1,-1,-1,-1,-1,-1} },
{ "Dummy", "dummy", N_("Dummy codec (do not transcode)") ,
- {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_AVI,MUX_RAW,MUX_MOV}},
+// {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_AVI,MUX_RAW,MUX_MOV}},
+ {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_RAW,MUX_MOV,MUX_WAV}},
{ NULL,NULL,NULL , {-1,-1,-1,-1,-1,-1,-1,-1,-1}} /* Do not remove me */
};
char *psz_method;
char *psz_descr;
char *psz_address;
- int muxers[9];
+ int muxers[MUXERS_NUMBER];
};
static struct method methods_array[] =
{ MUX_OGG, "ogg", "OGG", N_("OGG") },
{ MUX_RAW, "raw", "RAW", N_("RAW") },
{ MUX_ASF, "asf","ASF", N_("ASF") },
- { MUX_AVI, "avi","AVI", N_("AVI") },
+// { MUX_AVI, "avi","AVI", N_("AVI") },
{ MUX_MP4, "mp4","MP4", N_("MPEG4") },
{ MUX_MOV, "mov","MOV", N_("MOV") },
+ { MUX_WAV, "wav","WAV", N_("WAV") },
{ -1 , NULL,NULL , NULL } /* Do not remove me */
};
int i_mux;
int i_action;
void OnEncapChange(wxEvent& event);
- wxRadioButton *encap_radios[9];
+ wxRadioButton *encap_radios[MUXERS_NUMBER];
WizardDialog *p_parent;
wxWizardPage *p_prev;
wxWizardPage *p_streaming_page;
EVT_RADIOBUTTON( EncapRadio7_Event, wizEncapPage::OnEncapChange)
EVT_RADIOBUTTON( EncapRadio8_Event, wizEncapPage::OnEncapChange)
EVT_RADIOBUTTON( EncapRadio9_Event, wizEncapPage::OnEncapChange)
+ EVT_RADIOBUTTON( EncapRadio10_Event, wizEncapPage::OnEncapChange)
END_EVENT_TABLE()
/* Additional settings for transcode */
/* Set the dummy codec ( accept all muxers ) if needed */
if( !video_combo->IsEnabled() )
{
- i_video_codec = 12;
+ i_video_codec = VCODECS_NUMBER;
}
if( !audio_combo->IsEnabled() )
{
- i_audio_codec = 7;
+ i_audio_codec = ACODECS_NUMBER;
}
((wizEncapPage *)GetNext())->SetPrev(this);
- for( i = 0 ; i< 9 ; i++ )
+ for( i = 0 ; i< MUXERS_NUMBER ; i++ )
{
if( vcodecs_array[i_video_codec].muxers[i] != -1 )
{
- for( j = 0 ; j< 9 ; j++ )
+ for( j = 0 ; j< MUXERS_NUMBER ; j++ )
{
if( acodecs_array[i_audio_codec].muxers[j] ==
vcodecs_array[i_video_codec].muxers[i] )
}
((wizEncapPage *)GetNext())->SetPrev(this);
- for( i = 0 ; i< 9 ; i++ )
+ for( i = 0 ; i< MUXERS_NUMBER ; i++ )
{
if( methods_array[i_method].muxers[i] != -1 )
{
mainSizer->Add( 0,0,1 );
- for( i = 0 ; i< 9 ; i++ )
+ for( i = 0 ; i< MUXERS_NUMBER ; i++ )
{
encap_radios[i] = new wxRadioButton( this, EncapRadio0_Event + i,
wxU( encaps_array[i].psz_encap ) );
int i;
if( !event.GetDirection() )
{
- for( i = 0 ; i< 9 ; i++ )
+ for( i = 0 ; i< MUXERS_NUMBER ; i++ )
{
encap_radios[i]->Disable();
}
void wizEncapPage::EnableEncap( int encap )
{
int i;
- for( i = 0 ; i< 9 ; i++)
+ for( i = 0 ; i< MUXERS_NUMBER ; i++)
{
if( encaps_array[i].id == encap )
{
mrl, address);
msg_Dbg( p_intf,"Using %s (%i kbps) / %s (%i kbps),encap %s",
vcodec,vb,acodec,ab,mux);
- int i_tr_size = 10; /* 10 = ab + vb */
- i_tr_size += vcodec ? strlen(vcodec) : 0;
- i_tr_size += acodec ? strlen(acodec) : 0;
+ int i_tr_size = 0 ; /* 10 = ab + vb */
+ i_tr_size += vcodec ? strlen(vcodec) + strlen("vcodec=") +strlen("vb="): 0;
+ i_tr_size += acodec ? strlen(acodec) + strlen("acodec=") +strlen("ab=") : 0;
char *psz_transcode = (char *)malloc( i_tr_size * sizeof(char));
if( vcodec || acodec )
{
- fprintf( stderr, "snprintf returned %i\n",snprintf( psz_transcode, i_tr_size, "transcode{"));
- fprintf(stderr, "step 1 : %s\n", psz_transcode);
+ sprintf( psz_transcode, "transcode{" );
}
else
{
- snprintf( psz_transcode, i_tr_size, "%c", 0 );
+ snprintf( psz_transcode, 1 , "%c", 0 );
}
if( vcodec )
{
- fprintf( stderr, "snprintf returned %i\n",snprintf( psz_transcode, i_tr_size, "%svcodec=%s,vb=%i",
- psz_transcode, vcodec, vb ));
- fprintf(stderr, "step 2 : %s\n", psz_transcode);
+ i_tr_size += 5 + strlen(vcodec);
+ snprintf( psz_transcode, i_tr_size , "%svcodec=%s,vb=%i",
+ psz_transcode, vcodec, vb );
}
if( acodec )
{
- fprintf( stderr, "snprintf returned %i\n",snprintf( psz_transcode, i_tr_size, "%s%cacodec=%s,ab=%i",
- psz_transcode, vcodec ? ',' : ' ', acodec, ab ));
- fprintf(stderr, "step 3 : %s\n", psz_transcode);
+ i_tr_size += 6 + strlen(acodec);
+ /* FIXME */
+ sprintf( psz_transcode, "%s%cacodec=%s,ab=%i",
+ psz_transcode, vcodec ? ',' : ' ', acodec, ab );
}
if( vcodec || acodec )
{
- snprintf( psz_transcode, i_tr_size, "%s}:", psz_transcode );
- fprintf(stderr, "step 4 : %s\n", psz_transcode);
+ i_tr_size +=2;
+ sprintf( psz_transcode , "%s}:", psz_transcode );
}
i_size = 73 + strlen(mux) + strlen(address) + strlen(psz_transcode);
psz_opt = (char *)malloc( i_size * sizeof(char) );