#ifndef G_MENCODER #define G_MENCODER #include //#ifdef MEV_090RC3 #define ANALIZAR_FICHERO "mplayer -noquiet -v -identify -nocache \"%s\"" #define ANALIZAR_DVD "mplayer dvd:// -noquiet -nocache -v -identify" #define ANALIZAR_TITULO_DVD "mplayer dvd://%d -noquiet -nocache -v -identify" #define LINEA_TITULOS "There are*titles on this DVD*" #define INI_TITULOS "There are *" #define FIN_TITULOS " titles" #define SALTA_TITULOS 10 #define LINEA_CAPITULOS "There are*chapters in this DVD title*" #define INI_CAPITULOS "There are *" #define FIN_CAPITULOS " chapters" #define SALTA_CAPITULOS 10 #define LINEA_ASPECTO "ID_VIDEO_ASPECT=*" #define INI_ASPECTO "ID_VIDEO_ASPECT=*" #define FIN_ASPECTO " " #define SALTA_ASPECTO 16 #define LINEA_X "ID_VIDEO_WIDTH=*" #define INI_X "ID_VIDEO_WIDTH=*" #define FIN_X " " #define SALTA_X 15 #define LINEA_Y "ID_VIDEO_HEIGHT=*" #define INI_Y "ID_VIDEO_HEIGHT=*" #define FIN_Y " " #define SALTA_Y 16 #define LINEA_TAMANIO "ID_LENGTH=*" #define INI_TAMANIO "ID_LENGTH=*" #define FIN_TAMANIO " " #define SALTA_TAMANIO 10 #define LINEA_NOMBRE "ID_FILENAME=*" #define INI_NOMBRE "ID_FILENAME=*" #define FIN_NOMBRE " " #define SALTA_NOMBRE 12 #define LINEA_BITRATE_V "ID_VIDEO_BITRATE=*" #define INI_BITRATE_V "ID_VIDEO_BITRATE=*" #define FIN_BITRATE_V " " #define SALTA_BITRATE_V 17 #define LINEA_BITRATE_A "ID_AUDIO_BITRATE=*" #define INI_BITRATE_A "ID_AUDIO_BITRATE=*" #define FIN_BITRATE_A " " #define SALTA_BITRATE_A 17 #define LINEA_FPS "ID_VIDEO_FPS=*" #define INI_FPS "ID_VIDEO_FPS=*" #define FIN_FPS " " #define SALTA_FPS 13 #define LINEA_AUDIO "\\\[open\\] audio stream:*" #define INI_LAN_AUDIO "language: *" #define FIN_LAN_AUDIO " aid: *" #define SALTA_LAN_AUDIO 10 #define INI_FMT_AUDIO "audio format: *" #define FIN_FMT_AUDIO "?language:?*" #define SALTA_FMT_AUDIO 14 #define INI_ID_AUDIO " aid: *" #define FIN_ID_AUDIO " " #define SALTA_ID_AUDIO 6 #define LINEA_SUBTITULOS "\\[open\\] subtitle \\( sid \\):*" #define INI_LAN_SUBTITULOS "language: *" #define FIN_LAN_SUBTITULOS " " #define SALTA_LAN_SUBTITULOS 10 #define INI_ID_SUBTITULOS "subtitle ( sid ): *" #define FIN_ID_SUBTITULOS " language: *" #define SALTA_ID_SUBTITULOS 18 #define LINEA_650 "Recommended video bitrate for 650*" #define INI_650 "MB CD: *" #define FIN_650 "MB CD: *" #define SALTA_650 7 #define LINEA_700 "Recommended video bitrate for 700*" #define INI_700 "MB CD: *" #define FIN_700 "MB CD: *" #define SALTA_700 7 #define LINEA_800 "Recommended video bitrate for 800*" #define INI_800 "MB CD: *" #define FIN_800 "MB CD: *" #define SALTA_800 7 #define LINEA_2_650 "Recommended video bitrate for 2 x 650*" #define INI_2_650 "MB CD: *" #define FIN_2_650 "MB CD: *" #define SALTA_2_650 7 #define LINEA_2_700 "Recommended video bitrate for 2 x 700*" #define INI_2_700 "MB CD: *" #define FIN_2_700 "MB CD: *" #define SALTA_2_700 7 #define LINEA_2_800 "Recommended video bitrate for 2 x 800*" #define INI_2_800 "MB CD: *" #define FIN_2_800 "MB CD: *" #define SALTA_2_800 7 #define LINEA_2_800 "Recommended video bitrate for 2 x 800*" #define INI_2_800 "MB CD: *" #define FIN_2_800 "MB CD: *" #define SALTA_2_800 7 #define LINEA_PORCENT "Pos:*" #define INI_PORCENT "f (*" #define FIN_PORCENT "%)*" #define SALTA_PORCENT 3 #define LINEA_MEGAS "Pos:*" #define INI_MEGAS "min*" #define FIN_MEGAS "mb*" #define SALTA_MEGAS 3 #define LINEA_TIEMPO "Pos:*" #define INI_TIEMPO "Trem:*" #define FIN_TIEMPO "min*" #define SALTA_TIEMPO 5 #define LINEA_POSICION "Pos:*" #define INI_POSICION "Pos:*" #define FIN_POSICION "s*" #define SALTA_POSICION 4 //#endif #define MAX_TITULOS 128 #define MAX_CAPITULOS 512 #define NO_ORDEN 0 #define ORDEN 1 #define ORDEN_FRAMENO 2 #define ORDEN_VIDEO 3 #define NO_RESP 0 #define RESP_SI 1 #define RESP_NO 2 #define RESP_OK 1 #define RESP_CANCEL 2 #define CROP "crop area:*" #define INI_CROP "(-vop crop=*" #define FIN_CROP ")*" #define SALTA_CROP 11 #define PLAY 0 #define PAUSA 1 #define MAX_COLA 255 typedef struct { GtkWidget *winProgreso; GtkWidget *lblOrigen; GtkWidget *lblDestino; GtkWidget *lblTamanioFichero; GtkWidget *lblTiempoRestante; GtkWidget *pbPasadaEnCurso; GtkWidget *lblDescripcion; GtkWidget *lblOrden; GtkWidget *chkBorrarTemporal; GtkWidget *chkBorrarCopia; GtkWidget *chkEjecutarOrden; GtkWidget *entOrden; GtkWidget *chkPararDespues; GtkWidget *chkPararDespuesFich; GtkWidget *bntCancelarRippeo; GtkWidget *pbPasadas; GtkWidget *imgPlayPause; GtkWidget *lblPause; GtkWidget *bntPause; } PROGRESO; typedef struct { GtkWidget *winPrincipal; GtkWidget *nbkRippeo; GtkWidget *cmbCodecVideo; GtkWidget *entCmbCodecVideo; GtkWidget *frmCodecLavcodec; GtkWidget *lblBitrateLav; GtkWidget *cmbCodecLav; GtkWidget *entCmbCodecLav; GtkObject *spBitrateLav_adj; GtkWidget *spBitrateLav; GtkWidget *chkBitrateAutoLav; GtkWidget *rbt1PasadaLav; GtkWidget *rbt2PasadasLav; GtkWidget *rbt3PasadasLav; GtkWidget *chkCalidadAltaLav; GtkWidget *frmCodecVCopy; GtkWidget *cmbCodecAudio; GtkWidget *entCmbCodecAudio; GtkWidget *frmCodecLame; GtkWidget *spBitrateLame; GtkWidget *spCalidadLame; GtkWidget *spCalidadAlgoritmoLame; GtkWidget *frmCodecACopy; GtkWidget *lblIdiomaAudio; GtkWidget *cmbIdiomaAudio; GtkWidget *entCmbIdiomaAudio; GtkWidget *chkPostProcesar; GtkWidget *entPostProcesar; GtkWidget *entCmbPostProcesar; GtkWidget *cmbPostProcesar; GtkWidget *lblCmbPostProcesar; GtkWidget *lblValoresPostProcesar; GtkWidget *entValoresPostProcesar; GtkWidget *chkCropping; GtkWidget *lblValoresCropping; GtkWidget *cmbValoresCropping; GtkWidget *entCmbValoresCropping; GtkWidget *bntCalcularCropping; GtkWidget *bntMostrarCropping; GtkWidget *chkRedimensionar; GtkWidget *lblNuevoTamanio; GtkWidget *lblOFPS; GtkObject *spOutFrames_adj; GtkWidget *spOutFrames; GtkWidget *lblOAR; GtkObject *spOutAspect_adj; GtkWidget *spOutAspect; GtkWidget *lblMisc; GtkWidget *spX; GtkWidget *spY; GtkWidget *lblX; GtkWidget *lblY; GtkWidget *frmAlgoritmoRedimensionar; GtkWidget *cmbAlgoritmoRedimensionar; GtkWidget *entCmbAlgoritmoRedimensionar; GtkWidget *rbtMantenerLibre; GtkWidget *rbtMantenerAspecto; GtkWidget *rbtMantenerTamanio; GtkWidget *nbkFuente; GtkWidget *rbtUsarDVD; GtkWidget *bntAnalizarDVD; GtkWidget *lblTituloDVD; GtkWidget *cmbTitulosDVD; GtkWidget *entCmbTitulosDVD; GtkWidget *chkTodoTitulo; GtkWidget *lblDeCapituloDVD; GtkWidget *cmbDeCapitulosDVD; GtkWidget *entCmbDeCapitulosDVD; GtkWidget *lblAlCapituloDVD; GtkWidget *cmbACapitulosDVD; GtkWidget *entCmbACapitulosDVD; GtkWidget *lblCapitulosDVD; GtkWidget *rbtUsarFichero; GtkWidget *bntAnalizarFichero; GtkWidget *fileFicheroEntrada; GtkWidget *entFileFicheroEntrada; GtkWidget *nbkSalida; GtkWidget *chkCopiarADisco; GtkWidget *fileFicheroSalidaGeneral; GtkWidget *entFileFicheroSalidaGeneral; GtkWidget *fileFicheroCopiarDisco; GtkWidget *entFileFicheroCopiarDisco; GtkWidget *chkSubtitulos; GtkWidget *lblIdiomaSubtitulo; GtkWidget *chkFicheroSalidaSubtitulos; GtkWidget *cmbIdiomaSubtitulos; GtkWidget *entCmbIdiomaSubtitulos; GtkWidget *fileFicheroSalidaSubtitulos; GtkWidget *entFileFicheroSalidaSubtitulos; GtkWidget *rbt1CD; GtkWidget *rbt2CD; GtkWidget *rbt650; GtkWidget *rbt700; GtkWidget *rbt800; GtkWidget *chkTamanioFijo; GtkWidget *spTamanioFijo; GtkWidget *bntRippear; GtkWidget *bntGuardar; GtkWidget *bntProbarOrigen; GtkWidget *bntSalir; GList *cmbCodecVideo_items; GList *cmbCodecLav_items; GList *cmbCodecAudio_items; GList *cmbIdiomaSubtitulos_items; GList *cmbACapitulosDVD_items; GList *cmbDeCapitulosDVD_items; GList *cmbTitulosDVD_items; GList *cmbValoresCropping_items; GList *cmbIdiomaAudio_items; GList *cmbPostProcesar_items; GList *cmbAlgoritmoRedimensionar_items; GSList *rbt1PasadaLav_group; GSList *rbtUsarDVD_group; GSList *rbt1CD_group; GSList *rbt650_group; GSList *rbtMantenerAspectos_group; GSList *rbtHeaderAvi_group; GtkObject *spBitrateLame_adj; GtkObject *spCalidadLame_adj; GtkObject *spCalidadAlgoritmoLame_adj; GtkObject *spY_adj; GtkObject *spX_adj; GtkWidget *chkTiemposA; GtkObject *spTiemposA_adj; GtkWidget *spTiemposA; GtkWidget *chkTiemposDe; GtkObject *spTiemposDe_adj; GtkObject *spTamanioFijo_adj; GtkWidget *spTiemposDe; GtkWidget *pbEspacioSalida; GtkWidget *pbEspacioCopia; GtkObject *spAspectoFichero_adj; GtkWidget *spAspectoFichero; GtkObject *spTamanioFichero_adj; GtkWidget *spTamanioFichero; GtkObject *spAspectoDVD_adj; GtkWidget *spAspectoDVD; GtkObject *spTamanioDVD_adj; GtkWidget *spTamanioDVD; GtkWidget *lblTamanioDVD; GtkWidget *lblAspectoFichero; GtkWidget *lblTamanioFichero; GtkWidget *lblAspectoDVD; GtkWidget *rbtHeaderAvi; GtkWidget *rbtHeaderMpeg; GtkWidget *treeCola; GtkListStore *treeColaStore; GtkCellRenderer *treeColaRender; GtkTreeViewColumn *treeColaColumn; GtkTreeSelection *treeColaSeleccion; GtkWidget *bntArribaCola; GtkWidget *bntAbajoCola; GtkWidget *bntBorrarCola; GtkWidget *bntEncolar; GtkWidget *frmCodecDivx4; GtkWidget *lblBitrateDivx4; GtkObject *spBitrateDivx4_adj; GtkWidget *spBitrateDivx4; GtkWidget *chkBitrateAutoDivx4; GtkWidget *chkXvidVBRDivx4; GtkObject *spCalidadDivx4_adj; GtkWidget *spCalidadDivx4; GtkWidget *rbt1PasadaDivx4; GSList *rbt1PasadaDivx4_group; GtkWidget *rbt2PasadaDivx4; GtkWidget *rbt3PasadaDivx4; GtkWidget *rbtUsarTele; GtkWidget *bntAnalizarTele; GtkWidget *entParametrosTele; GtkWidget *bntEditarTele; GtkWidget *dateTele; GtkWidget *lblParametrosTele; GtkWidget *lblTiemposTele; } PRINCIPAL; typedef struct { GtkWidget *winFicheros; GtkWidget *tvProblema; GtkWidget *chkBorrarPass1; GtkWidget *chkBorrarBr; GtkWidget *chkBorrarPass2; GtkWidget *bntFicherosOk; GtkWidget *bntFicherosCancelar; } FICHERO; typedef struct { GtkWidget *winConfig; GtkWidget *lblDVDDevice; GtkWidget *entDVDDevice; GtkWidget *chkUsarAspectRatio; GtkWidget *lblPathMP; GtkWidget *entPathMP; GtkWidget *chkAutoDetectarPathMP; GtkWidget *chkDeleteCopyFile; GtkWidget *chkDeleteTemporalFiles; GtkWidget *hboxBotones; GtkWidget *bntCfgAplicar; GtkWidget *bntCfgGuardar; GtkWidget *bntCfgCerrar; } CONFIG; typedef struct { GtkWidget *winEditTV; GtkWidget *lblDriver; GtkWidget *cmbDriver; GtkWidget *entCmbDriver; GtkWidget *frmOptions; GtkWidget *lblInput; GtkWidget *lblChannel; GtkWidget *labelNose; GtkWidget *lblWidth; GtkWidget *rbtNoAudio; GtkWidget *lblBitrateAudio; GtkWidget *lblAudioMode; GtkWidget *lblVolumen; GtkWidget *lblBalance; GtkWidget *cmbInput; GtkWidget *entCmbInput; GtkObject *spChannel_adj; GtkWidget *spChannel; GtkObject *spNose_adj; GtkWidget *spNose; GtkObject *spWidth_adj; GtkWidget *spWidth; GtkWidget *rbtSiAudio; GtkObject *spAudoBitrate_adj; GtkWidget *spAudoBitrate; GtkWidget *cmbAudioMode; GtkWidget *entCmbAudioMode; GtkObject *spVolumen_adj; GtkWidget *spVolumen; GtkWidget *lblPorVolumen; GtkObject *spBalance_adj; GtkWidget *spBalance; GtkWidget *lblProBalance; GtkWidget *lblNorm; GtkWidget *lblChannelList; GtkWidget *lblFramesPerSecond; GtkWidget *lblHeight; GtkWidget *cmbNorm; GtkWidget *entCmbNorm; GtkWidget *cmbChannelList; GtkWidget *entCmbChannelList; GtkObject *spFramesPerSecond_adj; GtkWidget *spFramesPerSecond; GtkObject *spHeight_adj; GtkWidget *spHeight; GtkWidget *rbtCapturarAudioOSS; GtkWidget *lblAudioID; GtkWidget *rbtCapturarAudioAlsa; GtkObject *spAudioId_adj; GtkWidget *spAudioId; GtkWidget *chkUsarInmediateMode; GtkWidget *lblBass; GtkWidget *lblTremble; GtkObject *spBass_adj; GtkWidget *spBass; GtkWidget *lblPerBass; GtkObject *spTremble_adj; GtkWidget *spTremble; GtkWidget *lblPerTremble; GtkWidget *lblFrameOptions; GtkWidget *frmNoImplementado; GtkWidget *lblNoImplementado; GtkWidget *lblFrmNoImplementado; GtkWidget *lblResultado; GtkWidget *entResultado; GtkWidget *bntTVAplicar; GtkWidget *bntTVGuardar; GtkWidget *bntTVCerrar; GSList *rbtNoAudio_group; GList *cmbDriver_items; GSList *rbtSiAudio_group; GList *cmbAudioMode_items; GList *cmbNorm_items; GSList *rbtCapturarAudioOSS_group; GSList *rbtCapturarAudioAlsa_group; } EDIT_TV; typedef struct { GtkWidget *winFaltanDatos; GtkWidget *bntFaltanDatosOk; GtkWidget *lblFaltaCopiar; GtkWidget *lblFicheroSalida; } FALTAN_DATOS; typedef struct { GtkWidget *winOperacionEnCurso; GtkWidget *lblOperacionEnCurso; GtkWidget *bntOperacionCancelar; } OPERACIONENCURSO; typedef struct { GtkWidget *winSobreescribir; GtkWidget *lblFicheroSalida; GtkWidget *lblFicheroCopia; } SOBREESCRIBIR; typedef struct { int Titulos; char TextoTitulos[MAX_TITULOS][64]; char TextoSubtitulos[MAX_TITULOS][100][64]; int IdSubtitulos[MAX_TITULOS][100]; int NumSubtitulos[MAX_TITULOS]; char TextoAudio[MAX_TITULOS][100][20]; int IdAudio[MAX_TITULOS][100]; int NumAudio[MAX_TITULOS]; int Capitulos[MAX_TITULOS]; int x[MAX_TITULOS]; int y[MAX_TITULOS]; char Aspecto[MAX_TITULOS][10]; float AspectoNum[MAX_TITULOS]; int TamanioOrg[MAX_TITULOS]; int TiempoOrg[MAX_TITULOS]; int TiempoCap[MAX_TITULOS][MAX_CAPITULOS]; int BitrateOrgV[MAX_TITULOS]; int BitrateOrgA[MAX_TITULOS]; float FPS[MAX_TITULOS]; int Analizado; } DATOS_DVD; typedef struct { char TextoSubtitulos[100][64]; int IdSubtitulos[100]; int NumSubtitulos; int x; int y; char Aspecto[10]; float AspectoNum; int TamanioOrg; int TiempoOrg; int BitrateOrgV; int BitrateOrgA; float FPS; int Analizado; } DATOS_FICHERO; typedef struct { int Analizado; } DATOS_TELE; typedef struct { int Encolado; char Nombre[512]; char Orden[4][512]; int Pasadas; char Descripcion[4][512]; int TipoOrden[4]; int BitrateV; int BitrateAuto; char Path[512]; char FicheroPasada1[512]; char FicheroPasada2[512]; char FicheroBr[512]; int BorrarTemporales; char FicheroCopiarDisco[512]; char FicheroSalida[512]; char Origen[512]; int SaltarPasada1; int SaltarPasada2; int SaltarBr; int Tamanio; int Tiempo; time_t Comienzo; GtkTreeIter treeIter; } DATOS_RIPPEO; typedef struct { unsigned char Text[512]; unsigned char Value[512]; } OPTS_PP; typedef struct { unsigned char Text[512]; unsigned char Value[512]; } OPTS_SWS; typedef struct { char Path_mp[100]; char DeviceDVD[512]; char UsarAspectoPreviews; char AutoDetectarPathMP; char DeleteCopyFile; char DeleteTemporalFiles; char ResultadoTV[512]; char Guardado; char GuardadoTV; } CFGGEN; extern PROGRESO strProgreso; extern PRINCIPAL strPrincipal; extern CONFIG strConfig; extern OPERACIONENCURSO strOperacion; extern FICHERO strFicheros; extern FALTAN_DATOS strFaltanDatos; extern SOBREESCRIBIR strSobreescribir; extern DATOS_DVD medio_dvd; extern DATOS_FICHERO medio_fichero; extern DATOS_TELE medio_tele; extern OPTS_PP *opts_pp; extern OPTS_SWS *opts_sws; extern int SalirRippeo; extern int SalirOperacion; extern int Respuesta; extern int Pausa; extern CFGGEN CfgGen; extern EDIT_TV strEditTV; char *AnalizaLinea (char *linea, char *dato, char *id_linea, char *ini, char *fin, int salta); int AnalizaDVD (); int AnalizaTele (); int Rippea (DATOS_RIPPEO *datos_rippeo, int Ripeo, int NumRipeos); int AnalizaBitrateFrameno (char *linea, char *Path, int Tamanio); int AnalizaBitrateFramenoBr (char *Path, int TamanioCarga); void MsgError (const unsigned char * mensaje,...); char *LeeEtiqueta (char *Principal, char *Secundaria, char *Etiqueta, char *Dato, char *Fichero); int GeneraOptsVideo (char *CodecVideo, char *OptsVideo, char *OptsVideo1, char *OptsVideo2, float Aspecto, DATOS_RIPPEO *datos_rippeo); int CalculaBitrateV (); int GeneraOptsAudio (char *CodecAudio, char *OptsAudio); int CalculaBitrateA (); int CorrigeBitrateVideo (int Bitrate); int GeneraOrigen (char *Origen, int *Titulo, float *Aspecto); int HayOrigen (); float DameFPS (); void PonFPS (float fps); int DameTiempo (); void PonTiempo (int Tiempo); int DameX (); int DameY (); float DameAspecto (); void PonAspecto (float Aspecto); int TituloAct (); void EjecutaMplayer (char *param); char *SacaOpcionesVideo (char *OpcionesVideo); int AnalizaFichero (); int ComprobacionesRippeo (); int CompruebaFicheros (); int CompruebaFicherosTemporales (DATOS_RIPPEO *datos_rippeo); void GeneraOrdenes (char *Origen, char *CodecVideo, char *CodecAudio, char *OptsVideo, char *OptsVideo1, char *OptsVideo2, char *OptsAudio, char *Salida, char *FormatoSalida, DATOS_RIPPEO *datos_rippeo); int BitrateOrigenA (); int BitrateOrigenV (); void FicheroPasada2 (char *Fichero, DATOS_RIPPEO *datos_rippeo); void FicheroBr (char *Fichero, DATOS_RIPPEO *datos_rippeo); FILE * mypopen(char *path_cmd, char *cmd, char *mode, pid_t *pid, char *path); int mypclose(FILE *ptr); void DetectarCrop (); void SacaEspacioFS (char *Nombre, int *Libre, int *Total); int AnalizaCapitulos (int Titulo); #endif