Quantcast Predicción Ping-Pong - digitalFAQ.com Forums [Archives]
  #1  
03-23-2004, 09:00 PM
Prodater64 Prodater64 is offline
Free Member
 
Join Date: Mar 2003
Location: Palma de Mallorca - España
Posts: 2,925
Thanks: 0
Thanked 0 Times in 0 Posts
Esta es una traducción del método de predicción "Ping-Pong" explicado por incredible en:
http://www.kvcd.net/forum/viewtopic.php?p=52657#52657

Quote:
Originally Posted by incredible
Ayer escribí una rutina de AVS para ser utilizada como función, que se puede guardar en la carpeta plugins del avisynth con el nombre Slicer.avsi.

Para utilizarla, agregue al final de su script la línea:
Code:
Slicer (clip c, int "percent", int "gop", int "off", int "gl", int "subs")
Explicación:

Porcentaje = Porcentaje de la película a ser utilizado para la predicción.
(Predeterminado=2) (esto significa lógicamente 2%)

gop = la longitud del GOP que utilizará para codificar, (DVD PAL es 15, KVCD es 24), este valor será también el que coloque en el lenght del sampler.dll (Predeterminado=15, estándar PAL)

off = indica el frame dónde comienza el sample, es necesario para la predicción de Ping/pong.
(Predeterminado=00, así que el muestreo comienza en el frame 0)

gl = multiplicator del GOPlength, indica cuánto desea agrandar el lenght del sample. Siempre debe estar basado en el GOP.

subs = Subtítulo donde usted puede ver la recomendación para los ajustes del offset. Utilice esto la primera vez que haga un preview de su script, para ver los ajustes recomendados referentes al "off"
(Predeterminado = 0, que significa apagado, 1 = activo, recomendado=activo)

Y aquí está la función:

Code:
 ############################################################### 
## Slicing script 1.0b3
## Basado en el length del GOP y en samples porcentuales de la película### 
############# Incluye cálculo de los offsets ############## 
########### En caso de problemas contáctenme  ############ 
############### incredible at KVCD.net/forum ################## 
############################################################### 
# 

function Slicer (clip c, int "sa", int "gop", int "off", int "gl", int "subs") { 
off=default(off, 0)  
gop= default(gop, 15)  
gl= default(gl,2)  
sa= default(sa,2)  
subs = default (subs, 1) 
Frames=framecount(c) 
Framer=framerate(c) 
Offset=round(Framer*off) 
c=Trim(c,Offset,0) 
c=Subs >= 1 ? Subtitle(c, text_color=$999999 ,size=16,\ 
"Offset set to : "+String(off)+" sec.  "+\ 
"(Offset intervall should be: 0 sec. / "+\ 
String(Round(((Frames/Framer)/60)/(round(((Frames)/100)/(gop*gl))*sa)*60)/2)+" Sec.)",10,18 ) : \ 
Subtitle(c," ",10,18 ) 

c=sampler(c,samples=(round((Frames)/(gop*gl)/100*sa*1.009)), Length=(gop*gl)) 

Return c 
} 
################################################################
Ud. verá solamente los valores recomendados para el offset. Estos son los únicos que realmente necesita saber.

Cómo hacer una predicción usando este comando:

1. Codifique su audio a mp2 y mire en el windows explorer su tamaño en KB.

2. Agregue el Slicer() en el final de su script y configúrelo en relación a su codificación final. Para la predicción sugiero el 2% de la película. Escriba el lenght de su GOP y fije el multiplicador de GOP a 2 (esto significa 2 veces el GOPlenght como Samplerlength). El offset tiene que ser fijado a 0.

3. Haga un preview y apunte el segundo valor recomendado para el offset.

4. Ahora calcule:
Code:
((Tamaño final multiplexado (MB) - Overhead (MB))*1024) - Audiosize (KB)(lo que muestra el windows explorer)
Lo que deseamos es un mpg de 795MB para quemarse en un CDr80.
En este caso: 795-10=785.... 785x1024 = 803840 KB..... 803840 - 119808 (Audio hipotético)= 684032

Ahora el siguiente cálculo depende de qué porcentaje ha fijado para la predicción.
Ya dije que se asume y recomienda el 2%, por lo tanto 684032Kb/100*2 = 13.681. Ese es el tamaño del sample que tenemos que buscar.

5. Configure su encoder en CQ (ó Q) (configure el GOP al mismo tamaño que el utilizado en el Slicer()) y abra su script.

6. Seleccione un valor de CQ arbitrario (Nota del traductor: los habituales, dados por su experiencia)

7. Codifique.

8. Después de codificarlo tiene que mirar el tamaño del sample obtenido y compararlo con el calculado previamente. Si todavía no está suficientemente cerca aumente o disminuya el valor de CQ en el encoder y haga una nueva codificación tantas veces como sea necesario, hasta conseguir el tamaño del sample de referencia (o muy cercano).
Si usted logra una aproximación del 10% deberá hacer un "pong". Entendiéndose por "ping" la primera predicción utilizándose un offset=0 y por "pong" una segunda predicción basada en los valores obtenidos en la previsualización del "ping".
Por lo tanto modifique el valor del "off" según lo recomendado, salve el script y codifique otro sample. No necesita recargar el script en su encoder y el valor de CQ déjelo según lo utilizado como en el "ping".
Usted verá que la predicción ahora muestra diferentes escenas que al realizar el "ping". Esto es otro motivo para obtener una predicción acertada, ya que se utilizan diversas escenas de la película en la aproximación.

9. ¿Ahora... observa alguna diferencia entre el tamaño del sample anterior y el de este último?
Regularmente sí, ya que se refleja cómo ambas predicciones se comportan.

10. Continúe realizando "pongs" aumentando o disminuyendo la CQ y tenga presente la diferencia con el "ping". Ahora está muy cerca del tamaño necesario y con el tamaño del "ping" en mente, realice un último "safe"-"ping" (offset=0) y si el promedio del "ping" y del "pong" coinciden con el tamaño del sample de referencia, desactive el Slicer() en su script y codifique la película completa.

La siguiente imagen muestra cómo aproximarse a la CQ requerida (el nombre de los archivos muestran los valores de CQ y los Offsets utilizados)



Si Ud. quiere, puede agregar un margen de seguridad a sus cálculos, yo no lo he necesitado, pero cada usuario tiene diferentes experiencias, por lo tanto la utilización de un factor de corrección queda sujeto a sus necesidades.
Reply With Quote
Someday, 12:01 PM
admin's Avatar
Site Staff / Ad Manager
 
Join Date: Dec 2002
Posts: 42
Thanks: ∞
Thanked 42 Times in 42 Posts
  #2  
03-24-2004, 07:10 AM
Bravucon Bravucon is offline
Free Member
 
Join Date: Jul 2003
Posts: 76
Thanks: 0
Thanked 0 Times in 0 Posts
OOOOOOOOOOle tus H.....os!!!!!!!!!!


Reply With Quote
  #3  
03-26-2004, 12:30 AM
fabrice fabrice is offline
Free Member
 
Join Date: Mar 2003
Location: Madrid-Spain
Posts: 515
Thanks: 0
Thanked 0 Times in 0 Posts
Wenas,

Solo queria añadir que para codificar, hay que añadir un 0 como último parametro, para que no salgan los subtitulos de longitud recomendada.
Es decir, que si tenemos la linea siguiente:
Code:
Slicer (2, 25, 0, 2)
tenemos que cambiarla a
Code:
Slicer (2, 25, 0, 2,0)
antes de codificar.

Además, en 352x288, no se ve el final del subtitulo, por lo que hay que cambiar la linea
Code:
c=Subs >= 1 ? Subtitle(c, text_color=$999999 ,size=16,\
"Offset set to : "+String(off)+" sec.  "+\
"(Offset intervall should be: 0 sec. / "+\
String(Round(((Frames/Framer)/60)/(round(((Frames)/100)/(gop*gl))*sa)*60)/2)+" Sec.)",10,18 ) : \
Subtitle(c," ",10,18 )
por
Code:
c=Subs >= 1 ? Subtitle(c, text_color=$999999 ,size=16,\
"Offset set to : "+String(off)+" sec.  "+\
"(should be: 0 sec. / "+\
String(Round(((Frames/Framer)/60)/(round(((Frames)/100)/(gop*gl))*sa)*60)/2)+" Sec.)",10,18 ) : \
Subtitle(c," ",10,18 )
Salu2
Fabrice
Reply With Quote
  #4  
03-26-2004, 03:03 AM
Prodater64 Prodater64 is offline
Free Member
 
Join Date: Mar 2003
Location: Palma de Mallorca - España
Posts: 2,925
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by fabrice
Wenas,

Solo queria añadir que para codificar, hay que añadir un 0 como último parametro, para que no salgan los subtitulos de longitud recomendada.
Es decir, que si tenemos la linea siguiente:
Code:
Slicer (2, 25, 0, 2)
tenemos que cambiarla a
Code:
Slicer (2, 25, 0, 2,0)
antes de codificar.

Además, en 352x288, no se ve el final del subtitulo, por lo que hay que cambiar la linea
Code:
c=Subs >= 1 ? Subtitle(c, text_color=$999999 ,size=16,\
"Offset set to : "+String(off)+" sec.  "+\
"(Offset intervall should be: 0 sec. / "+\
String(Round(((Frames/Framer)/60)/(round(((Frames)/100)/(gop*gl))*sa)*60)/2)+" Sec.)",10,18 ) : \
Subtitle(c," ",10,18 )
por
Code:
c=Subs >= 1 ? Subtitle(c, text_color=$999999 ,size=16,\
"Offset set to : "+String(off)+" sec.  "+\
"(should be: 0 sec. / "+\
String(Round(((Frames/Framer)/60)/(round(((Frames)/100)/(gop*gl))*sa)*60)/2)+" Sec.)",10,18 ) : \
Subtitle(c," ",10,18 )
Salu2
Fabrice
Para codificar, sólo hace falta comentar la línea Slicer con el símbolo "#" (sin las comillas). Agregar el 0, hace que desaparezca la leyenda, pero igual se obtendrá como resultado de la codificación un sample.
En cuanto al texto, disminuyendo el tamaño de la fuente (size= ), también se logrará verlo completamente.
Reply With Quote
  #5  
03-26-2004, 10:33 AM
digitall.doc digitall.doc is offline
Free Member
 
Join Date: Jul 2003
Location: Valencia (España)
Posts: 741
Thanks: 0
Thanked 0 Times in 0 Posts
Pues otro comentario más...
Llevo utilizando este método algún tiempo, y en mi caso, cuando calculo los MB que me quedan para el video, suele ser necesario añadir unos 20-40 MB porque si no se me queda al final el archivo algo pequeño. Pero desde que empecé a utilizarlo sólo me ha fallado una vez (de unas 10 películas distintas). Lo empleo incluso para KDVD.
Y en cuanto a poner al final un 0 o un 1... creo que en cierto modo tenéis razón los dos. Cuanto estás codificando la prueba, no tienes que comentar la línea de slicer, pero es conveniente poner un 0, porque si no estás codificando también el texto con la longitud, que luego en la película no aparece, y entonces la predicción está falseada.
Cuando después codificas la película entera, después de la predicción, entonces sí que se debe comentar (#) la línea slicer.
Reply With Quote
  #6  
03-26-2004, 11:03 AM
Prodater64 Prodater64 is offline
Free Member
 
Join Date: Mar 2003
Location: Palma de Mallorca - España
Posts: 2,925
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by digitall.doc
Y en cuanto a poner al final un 0 o un 1... creo que en cierto modo tenéis razón los dos. Cuanto estás codificando la prueba, no tienes que comentar la línea de slicer, pero es conveniente poner un 0, porque si no estás codificando también el texto con la longitud, que luego en la película no aparece, y entonces la predicción está falseada.
Cuando después codificas la película entera, después de la predicción, entonces sí que se debe comentar (#) la línea slicer.
Yo también lo entiendo de esa forma, pero cómo en el post no lo aclaraba...

Habría que comparar, en cuanto incrementa el subtítulo el tamaño del sample para ver la conveniencia o no de deshabilitarlo.
Reply With Quote
  #7  
03-28-2004, 04:58 AM
digitall.doc digitall.doc is offline
Free Member
 
Join Date: Jul 2003
Location: Valencia (España)
Posts: 741
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Prodater64
Habría que comparar, en cuanto incrementa el subtítulo el tamaño del sample para ver la conveniencia o no de deshabilitarlo.


Puede que lo incremente, o que lo disminuya. Pero cuando codifiques la película no estará ahí.

Yo simplemente lo quitaría al hacer los samples.
Sólo sirve para calcular el retraso en segundos del segundo sample.
Después ya no es necesario.
Reply With Quote
  #8  
03-28-2004, 08:22 AM
incredible incredible is offline
Free Member
 
Join Date: May 2003
Location: Germany
Posts: 3,189
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via ICQ to incredible
Bueno, hablo un poco de espanol, pero no creo que sera bastante para entender TODO de lo qe se esta hablando aqui.

Referido a mi avs función arriba:
La linea subtitula se usa solamente UNA vez para se ve como se tiene que cambiar el "pong" offset para que salen los "samples" in la mitad de los "samples" "ping". As es el logico.

Si uno sale con menos MBs cada vez, es possible a cambiar el factor "1.009" ahi para puede "match" el querido tamano. Es komo el TOK donde mucha gente tenia sus personal optimal settings.



Y ne se porque este asunto es llamado "pingpong versus Longshort" asi como aqui no me parece que se comapara pero que se explica y prueba la función "pingpong"

PS: Esta función tambien uso si quiero hacer una prediction con FFvfw o el mencoder para windows. Porque esta encoder independiente ... solamente se tiene que usar el avisynth para "frameserver" esto es todo.
Reply With Quote
  #9  
03-28-2004, 08:34 AM
digitall.doc digitall.doc is offline
Free Member
 
Join Date: Jul 2003
Location: Valencia (España)
Posts: 741
Thanks: 0
Thanked 0 Times in 0 Posts
Maestro incredible, que gusto verte por aquí.
Olvidé comentar que este método, efectivamente, lo empleo en cualquier predicción que hago, con cualquier encoder. Y funciona de maravilla.
Aprovecho para agradecerte su creación. Bueno, de esta herramienta, y por todo lo demás en lo que ayudas al personal

Y eso es lo que da la maestría, no sólo lo que uno sabe, sino el ponerlo a disposición de los demás, compartirlo y ayudar.
Reply With Quote
  #10  
03-28-2004, 09:46 AM
Prodater64 Prodater64 is offline
Free Member
 
Join Date: Mar 2003
Location: Palma de Mallorca - España
Posts: 2,925
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by incredible
Y ne se porque este asunto es llamado "pingpong versus Longshort" asi como aqui no me parece que se comapara pero que se explica y prueba la función "pingpong"
Lo llamé así para hacer referencia al hilo en inglés.
I just call it so, like in english thread.

Editado
Corregido el título del hilo.
Reply With Quote
  #11  
03-28-2004, 11:54 AM
Prodater64 Prodater64 is offline
Free Member
 
Join Date: Mar 2003
Location: Palma de Mallorca - España
Posts: 2,925
Thanks: 0
Thanked 0 Times in 0 Posts
Aquí va una versión mejorada de la función de Incredible.

- No es necesario ingresar un valor para off. Pero puede hacerse si se quieren obtener samples que eviten las primeras partes de la película (generalmente títulos y partes oscuras de bajo bitrate), que no son representativas proporcionalmente.

- Tiene una variable para activar o desactivar las leyendas y que se llama Debug. 0 = Inactivo, 1 = Activo. No es necesario activarlas.

- Tiene una variable que indica que sample estamos haciendo. Sólo hay que cambiar entre ping o pong, para que el script obtenga los samples correspondientes.

El resto es igual al script original.
Code:
##########################################################################
##                                   Slicing script 1.0b3              ###
## Basado en el length del GOP y en samples porcentuales de la película### 
###################### Incluye cálculo de los offsets #################### 
###################### En caso de problemas contáctenme  ################# 
######################### incredible at KVCD.net/forum ################### 
################################ Prodater64 Mod ########################## 

function Slicer (clip c, int "sa", int "gop", int "off", int "gl", string "pingpong", int "Debug") { 
sa = default(sa, 2) 
gop = default(gop, 15)  
off = default(off, 0)  
gl = default(gl, 2)  
pingpong = default (pingpong, "ping") 
Debug = default(Debug, 0)
Frames = framecount(c) 
Framer = framerate(c) 
off1 = off
off2 = Round((gop*gl*100)/(framer*sa*2)) + off
off = (pingpong == "ping") ? off : Round((gop*gl*100)/(framer*sa*2)) + off
Offset = round(Framer*off) 
c = Trim(c,Offset,0) 
c = (Debug == 1) ? Subtitle(c, text_color=$999999 ,size=16,\ 
String(pingpong)+\ 
" - "+\ 
"Frames="+String(Frames)+" Framer="+ LeftStr(String(Framer),5)+" off="+String(off1)+"/"+\
String(off2),10,18 ) : \ 
Subtitle(c," ",10,18 ) 
c = sampler(c,samples=(round((Frames)/(gop*gl)/100*sa*1.009)), Length=(gop*gl)) 

Return c 
} 
###########################################################################

#Slicer(sa,gop, off,gl, type , Debug (0/1=Inactivo/Activo)#################
#Slicer(2, 24 , 00, 2, "ping", Debug = 1) #Agregar esta línea al final del script de codificación#
Reply With Quote
  #12  
03-28-2004, 01:05 PM
incredible incredible is offline
Free Member
 
Join Date: May 2003
Location: Germany
Posts: 3,189
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via ICQ to incredible
@ digitall.doc

Un gran gacias y es un placer de ayudarles y partir en discussiones yon ustedes y claro que tambien por aqui en la seccíon español que tiene bien razon porque asi puedo practicar mi español (ves que ahora puedo poner el "ñ" porque estoy escribiendo usando el Macintosh siempre se me olvida como ponerlo usando el keypad del PC)

@ Prodater

Se ve bien, y la proxima vez quando necesito una predicción claro que lo voy a probar!
Si la prediction "slicer" funcciona bien con el MCE y su modo "Q" bueno andale!
(No solamente no uso el MCE referido a su pequeños valores del modo Q si no tambien del caso de la calidad, como lo has oido de Dialhot y Kwag ... y hice mi misma opinión ... Pero habian veces donde cosas con "manos" de otra gente funciona differente! No joke!
Reply With Quote
  #13  
03-28-2004, 01:22 PM
Prodater64 Prodater64 is offline
Free Member
 
Join Date: Mar 2003
Location: Palma de Mallorca - España
Posts: 2,925
Thanks: 0
Thanked 0 Times in 0 Posts
Gracias Inc.
Yo también opino que el MCE hay que mejorarlo, pero con mis tweaks me va bastante bien, sobre todo en lo que ahorro en tiempo. (Tengo un PIII 450 y un portátil PIV, pero no parece tal ya que va muy lento.)

Gracias de nuevo por visitar el sector español.
Hasta pronto.
Reply With Quote
  #14  
04-02-2004, 08:54 PM
Prodater64 Prodater64 is offline
Free Member
 
Join Date: Mar 2003
Location: Palma de Mallorca - España
Posts: 2,925
Thanks: 0
Thanked 0 Times in 0 Posts
Hola:
Quote:


Los créditos de este método pertenecen completamente a Incredible.

Más mejoras.
Cambios:
- El script puede mostrar el título de la película en la pantalla de información.
- El script muesta más información en pantalla.
- La pantalla de información no muestra el sample. Este se activa con un control de Debug.
- "Panel de Control" en el avs para: Título de la película, Nº de CD's, Tiempo del CD, Factor.
- Ajustes de la función Slicer más comprensibles, con el mismo orden que en el script de Incredible, más controles para seleccionar Ping/Pong, Debug y tipo de codificación (sample o full).
- Fácil de entender para cualquiera.


Este método tiene 1 archivo avsi más código a poner en el script de avisynth.

Script AVS de codificación

Las líneas entre "aquí su script" y no modificar", que indican los filtros a aplicar, sólo son un ejemplo.
Copie esto y péguelo en su script AVS. Optimizado para fuente Trebuchet MS, normal, 12, 1024*768.

Code:
########################################################################## 
##                                   Slicing script 1.0b3              ### 
## Basado en el length del GOP y en samples porcentuales de la película### 
###################### Incluye cálculo de los offsets #################### 
###################### En caso de problemas contáctenme  ################# 
######################### incredible at KVCD.net/forum ################### 
############################### (Prodater64 Mod) #########################

######################################### Panel de Control ####################################################
Movie=	                                   		    "The Matrix" 
cds = 1                           # Seleccionar cds = 1 para 1 CD de 80 min., = 2 para 2 CD's o DVD 4,7 GB (3 pelis en 1)
cdtime = 80.3                  # Seleccionar el tamaño del CD
Factor = 1.009                # Factor de corrección
######################################### Slicer Settings ######################################################
sa = 2                            # (2) Es el tamaño del sample expresado en porcentaje
gop = 24                        # (15 -18 -24 -25) Es el tamaño del GOP
off = 00                         # Le indica al script dónde comenzará el sample del ping. Puede inicialmente colocarse a 05 para
                                    # que los samples comiencen luego de los títulos, que no suelen ser representativos del tamaño final
gl = 2                            # Multiplicador del GOP, para cálculos del script
PingPong = "Ping"           # (Ping - Pong) Indica que sample se está codificando
Debug = 0                     # (0 - 1) Indica si queremos o no ver la información sobreimpresa
Codificar = 1                  #(0 - 1) 0 = Realiza los samples para predicción, 1 = Realiza la codificación completa.
############################################# Source #########################################################		#mpeg2source("C:\Su ruta\kvcd.d2v") 

AVISource("C:\Su ruta\Su video.avi",false)
##########################################  Aqui su script #####################################################
#ConvertToYV12() 
#AddBorders(0,0,x,y)
BlindPP(cpu=4) 
Blockbuster(method="noise",detail_min=1,detail_max=3,variance=0.1,seed=1)
Convolution3D(1, 6, 12, 6, 8, 2.8, 0) 

BicubicResize(704, 320, 0, 0.6, 0, 0, 640, 272)

Undot() 
TemporalSoften(2,7,7,3,2) 
DCTFilter(1,1,1,1,1,1,0.5,0) 
#Blockbuster(method="noise",detail_min=1,detail_max=10,variance=0.3,seed=5623) 

AddBorders(8, 128, 8, 128)

#ConvertToYUY2() 

########################################## No Modificar ####################################################### 
Codificar == 0 ? Slicer(sa, gop, off, gl, PingPong, Debug, movie, cds, cdtime, Factor) : Trim(0,0) 
##############################################################################################################

AVSI file

Copie este script y péguelo en un archivo de texto con la extensión avsi.
Póngalo en la carpeta plugins del avisynth 2.5x.
Es autoexplicativo.

Code:
#------------------------# 
# Slicer Function  # 
#-----------------------# 

function Slicer (clip c, int "sa", int "gop", int "off", int "gl", string "PingPong", int "Debug", string "movie", int "cds", float "cdtime", float "Factor") 

{ 
movie = default(movie,"Título no definido") 
Factor = default(Factor,1.009) 
cds = default(cds, 1) 
cdtime = default(cdtime, 80) 

sa = default(sa, 2) 
gop = default(gop, 15)  
off = default(off, 0)  
gl = default(gl, 2)  
pingpong = default (pingpong, "ping") 
Debug = default(Debug, 0)
Frames = framecount(c) 
Framer = framerate(c)

MovieLength  = Framecount(c)/Framerate(c) 
FramesSample = Framecount(sampler(c,samples=(round((Frames)/(gop*gl)/100*sa*Factor)), Length=(gop*gl))) 
CD_Size = ((((cdtime*10)-0))*1024)*cds 
Overhead = 20*1024/803*cdtime*10*cds/1024

#--------------------------------------------------------------------- 

A096=((( 96*1024)/8)*Movielength)/1048576*0.975
V096=(CD_Size-(A096*1024)-(Overhead*1024))/1024
A112=((( 112*1024)/8)*Movielength)/1048576*0.975
V112=(CD_Size-(A112*1024)-(Overhead*1024))/1024
A128=(((128*1024)/8)*Movielength)/1048576*0.975
V128=(CD_Size-(A128*1024)-(Overhead*1024))/1024
A160=(((160*1024)/8)*Movielength)/1048576*0.975
V160=(CD_Size-(A160*1024)-(Overhead*1024))/1024
A192=(((192*1024)/8)*Movielength)/1048576*0.975
V192=(CD_Size-(A192*1024)-(Overhead*1024))/1024
A224=(((224*1024)/8)*Movielength)/1048576*0.975
V224=(CD_Size-(A224*1024)-(Overhead*1024))/1024

#--------------------------------------------------------------------- 

off1 = off
off2 = Round((gop*gl*100)/(framer*sa*2)) + off
off = (pingpong == "ping") ? off : Round((gop*gl*100)/(framer*sa*2)) + off
Offset = round(Framer*off) 
c = Trim(c,Offset,0) 
c = sampler(c,samples=(round((Frames)/(gop*gl)/100*sa*Factor)), Length=(gop*gl)) 

#--------------------------------------------------------------------- 

c =  (Debug == 1) ? BlankClip(c,1,544,480). 

\Subtitle(movie, 40, 20, halo_color=$5500FF, text_color=$FFFFFF). 
\Subtitle(String("Codificando: " + PingPong), 325, 20, halo_color=$5500FF, text_color=$FFFFFF).
\Subtitle("Frames Totales : " + String(Frames), 40,40). 
\Subtitle("Framerate: " + LeftStr(String(Framer),5) + " fps", 325, 40).
\Subtitle("Frames del Sample: "+ String(FramesSample), 40,60). 
\Subtitle("GOP Lenght: "+ string(gop), 325,60). 
\Subtitle("Tiempo Total: " + String(round(Movielength)) + " seg", 40, 80). 
\Subtitle(LeftStr(String(Movielength/60),6) + " min", 225, 80).
\Subtitle("Off (Ping/Pong): "+String(off1)+"/"+ String(off2), 325, 80). 
\Subtitle("Bitrate Avg del mpg (kbps) : ", 40,100). 
\Subtitle(String(Round(((((CD_Size-((128/8)*Movielength)))/Movielength)*8)*1)), 250,100). 
\Subtitle("Factor = " + LeftStr(String(factor),5), 325, 100). 

\Subtitle("Tam. del Sample Buscado para un medio de: ~ " + String(Round(A224+V224+Overhead)) +" MB", 40,130, text_color=$FFFFFF). 
\Subtitle("- Audio a 096 kbps :                                " + "Sample = " + String(Round((CD_Size-(A096*1024))*sa/100)) + " KB", 40, 150). 
\Subtitle("- Audio a 112 kbps :                                " + "Sample = " + String(Round((CD_Size-(A112*1024))*sa/100)) + " KB", 40, 170). 
\Subtitle("- Audio a 128 kbps :                                " + "Sample = " + String(Round((CD_Size-(A128*1024)-(Overhead*1024))*sa/100))
\ + " KB", 40, 190). 
\Subtitle("- Audio a 160 kbps :                                " + "Sample = " + String(Round((CD_Size-(A160*1024))*sa/100)) + " KB", 40, 210). 
\Subtitle("- Audio a 192 kbps :                                " + "Sample = " + String(Round((CD_Size-(A192*1024))*sa/100)) + " KB", 40, 230). 
\Subtitle("- Audio a 224 kbps :                                " + "Sample = " + String(Round((CD_Size-(A224*1024))*sa/100)) + " KB", 40, 250). 

\Subtitle("Audio Bitrate      Audio   +    Video      +     Overhead    =    Total ", 40,310, text_color=$FFFFFF). 
\Subtitle("-  096 kbps :     "+ String(Round(A096)), 40, 330).
\Subtitle( " MB   +   " + String(Round(V096)), 177, 330).
\Subtitle( " MB   +        " + String(Overhead), 275, 330).
\Subtitle( " MB      =   " + String(Round(A096+V096+Overhead)), 380, 330). 
\Subtitle( "   MB", 485, 330).

\Subtitle("-  112 kbps :     "+ String(Round(A112)), 40, 350).
\Subtitle( " MB   +   " + String(Round(V112)), 177, 350).
\Subtitle( " MB   +        " + String(Overhead), 275, 350).
\Subtitle( " MB      =   " + String(Round(A112+V112+Overhead)), 380, 350). 
\Subtitle( "   MB", 485, 350).

\Subtitle("-  128 kbps :     "+ String(Round(A128)), 40, 370).
\Subtitle( " MB   +   " + String(Round(V128)), 177, 370).
\Subtitle( " MB   +        " + String(Overhead), 275, 370).
\Subtitle( " MB      =   " + String(Round(A128+V128+Overhead)), 380, 370). 
\Subtitle( "   MB", 485, 370).

\Subtitle("-  160 kbps :     "+ String(Round(A160)), 40, 390).
\Subtitle( " MB   +   " + String(Round(V160)), 177, 390).
\Subtitle( " MB   +        " + String(Overhead), 275, 390).
\Subtitle( " MB      =   " + String(Round(A160+V160+Overhead)), 380, 390). 
\Subtitle( "   MB", 485, 390).

\Subtitle("-  192 kbps :     "+ String(Round(A192)), 40, 410).
\Subtitle( " MB   +   " + String(Round(V192)), 177, 410).
\Subtitle( " MB   +        " + String(Overhead), 275, 410).
\Subtitle( " MB      =   " + String(Round(A192+V192+Overhead)), 380, 410). 
\Subtitle( "   MB", 485, 410).

\Subtitle("-  224 kbps :     "+ String(Round(A224)), 40, 430).
\Subtitle( " MB   +   " + String(Round(V224)), 177, 430).
\Subtitle( " MB   +        " + String(Overhead), 275, 430).
\Subtitle( " MB      =   " + String(Round(A224+V224+Overhead)), 380, 430). 
\Subtitle( "   MB", 485, 430).

\BilinearResize(width(c), height(c)) : Subtitle(c,"", 10, 18 ) 
return c
}

#------------------------------# 
# End Slicer Function  # 
#-----------------------------#
Hasta pronto.
Reply With Quote
Reply




Similar Threads
Thread Thread Starter Forum Replies Last Post
Ping-pong prediction vs Long-short prediction Abond Avisynth Scripting 136 07-05-2005 02:13 PM
Prediction Ping-pong ??? neptune Conversion et d'Encodage de Vidéo (Français) 3 11-09-2004 04:18 AM
Very good result with ping-pong prediction fabrice Avisynth Scripting 4 11-05-2004 11:53 AM
Prediccion Novatisisimo Convertir y Codificar Video (Español) 10 06-15-2004 08:25 PM
About ping-pong prediction. zagor Avisynth Scripting 8 05-08-2004 03:06 PM

Thread Tools



 
All times are GMT -5. The time now is 07:52 AM  —  vBulletin © Jelsoft Enterprises Ltd