virtualdubmod is a project that was born when suddenly a ... · priss rocks! : let you use priss...

Post on 23-Jul-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

VirtualDubModisaprojectthatwasbornwhensuddenlyalotofmodificationstotheoriginalVirtualDubbyAveryLeesprungup,mainlyontheDoom9forums.SomepeoplegottiredofneedingseveraldiffrentmodifiedVirtualDubexecutables,sotheideaarosetoputthemalltogetherintoasingleapp,VirtualDubMod.

Thefounderswere:

VirtualDubOGM-CyriusVirtualDubMPeg2-Pulco-CitronVirtualDubAVS-Belgabor

ExtendedfeaturesinVirtualDubMod1.5.x

Nb:VirtualDubModnowhasabasicUnicodesupport.HoweverthissupportisonlyavailableinWindowsversionsthathandleitnatively(2k/XPhandleit).Win9xdoesn'thandleUnicodenativelyandsoyouwon'thaveUnicodesupportinVirtualDubModwiththisOS.

ThisshortdocumentationgiveyousomeinformationonthefollowingsubjectsinVirtualDubMod1.5.x:

PreferencesAVIInformationImageformatsStreamsmenuMultiplestreamshandlingCommentsandchaptershandlingPreviewingandSavingBatchmodeMiscellanea

Preferences

Sinceversion1.5.4.xVirtualDubModalsousesanextendedtreelistthankstowhichyoucanaccessallitspreferences.Dependingonwhichkindofpreferenceitis,clickingonaniteminthetreewillmakeappearacomboboxoraneditbox(optionallyanicontopopupafileselector).Forenabling/disablingpreferences(checkbox/radiobutton)clickonthecheckboxorradiobutton.

Thedefaultvideomode(Directstreamcopy,Fastrecompress,Normalrecompress,Fullprocessingmode)inwhichVirtualDubModstartscanbechangedintheMainpreferences.

TheDisplaypreferencesletyouchoosetoenable/disablebydefaulttheDisplayinputvideoandDisplayoutputvideooftheOptionsmenu.Youcanaskforthewindowtobeautomaticallyresized(accordingtothesizeoftheopenedvideo)andcentered.Youcanalsospecifyaspecificlanguagedlltouse(allorpartofthestrings/messagesintheprogramwillbeaffected).

TwonewAVIoptionshavebeenaddedintheAVIPreferences.ThefirstoneletyouspecifythedefaultbehaviourofVirtualDubModconcerningMP3VBRalaNandubinAVIfiles.YoucaneitherforceVirtualDubModtohandlethestreamthesamewayNandubdoes,orlettheprogramfixtheVBRstreamasVirtualDubdoes.Notethatyouwillbeaskedtoconfirmthisbehaviour(ortousetheotherone)ifaVBRstreamisdetectedwhenopeninganAVIfile(justclickYesifyouwanttousethebehaviouryouspecifiedinthepreferences).ThesecondoneconcernsthewaytohandleAC3andDTSsourceswhensavingtoAVI.IthasbeenreportedmanytimesthatNandub(andVirtualDub)cutanAC3trackanywhere(andgenerallyinthemiddleofanaudioframe)wheneditinganAVIfile.ThissometimesleadtotroubleswhenusingtheAC3trackwithothertools.YoucanaskVirtualDubModtowritethesizeoftheaudioframes(onlypossiblewithCBRstreams)intheAVIheaders.Thespecstheoricallyallowitbutactuallyprogramsgenerallyfixthisvalueto1(meaningthattheprogramcancutthestreamoneverybyteifitwants).Writingthesizeoftheframesintheheadershouldforceothereditingtoolstodealwithfullaudioframes(andsoitshouldn'tcutanywhere).UsethisfeatureATYOUROWNRISKS!!

AnewAudiosectionhavebeenaddedinthePreferences.Thistabletyouaccess5optionsinVirtualDubMod:

Defaultpreload:defaultpreloadvalue(inms)touseforaudiostreamsDisablepreloadfornonAVIoutput:letyoudisablepreloadwhennotsavingtoAVIPrissrocks!:letyouusePriss(VirtualDubinternalMpegaudiodecoder)insteadofanACMonewhendecodingMP3audio.Theremaybesomebugs(inthewayitisimplemented,notinPriss;))butitseemstoworkbetterthanACMonMP3VBR:)Groupframes:minimumnumberofaudioframestopackinablock.0meanstoprocessoneframeatatime.OnlyeffectivewhennotsavingtoAVI,notprocessingMP3VBRalaNandub,orwhenusingtheFramemode(seebefore)Keepcorrupteddata:tellsVirtualDubModwhattodowithcorrupteddatafoundinMP3/AC3/DTSfiles.Whenkepttheprogramwilltrytokeepthestreaminsynchbyprocessingthecorrupteddataasrealdata(computingtheequivalentnumberofsamplescorrespondingtothesizeofthecorrupteddata)

AndaMatroskasectionhasalsobeenaddedforthosewhowanttotestdifferentsettings.

AVIInformation

ThefieldPreloadskewintheAVIinformationwindowgiveyouthenumberofblocksandanestimatednumberofsamplesusedforpreloading.Twofieldshavebeenaddedinthiswindow:

FourCCcode:giveyoutheFourCCcodeofthecompressionformatforthevideo.NotethattheDecompressorfielddoesn'tnecessarilygiveyouthecodecinwhichthevideohasbeencompressed(e.g.DivX3/4videoisdecompressedbytheDivX5decoder).Thesecondlinegiveyouthename(ifknown)oftheformatcorrespondingtothisFourCCcode.Audiotag:giveyouthecompressionformat(thewFormatTagvalue)oftheaudiostream.TellsyouifanACMdecoderisavailableforthisformat(thefieldCompressiongiveyouthenameoftheACMcodecinthiscase).Thesecondlinegiveyouthename(ifknown)oftheformatcorrespondingtothistag.

NotethatthenameoftheformatisretrievedfromtheCodecs.inifile(thatshouldbeinyourVirtualDubModdirectory).ThisfilecomesfromTheCoreMediaPlayer.Wethankitsdeveloppersforthisgreatplayer,havingmadethisfileandlettingususeit:).

Imageformats

VirtualDubModnowusetheCoronalibrary.ThislibraryhandleBMP,TARGA,PNG,JPEG,GIFandPCXimageformatsoninput,andPNGonoutput.

Thismeansthatyoucanopenimagesequencesinoneofthoseformats(BMPandTARGAarestillhandledbyVirtualDubinternalroutinesthough),andsavetoaBMP(usingVirtualDubBMProutines),TARGA(usingVirtualDubTARGAroutines)orPNG(usingCoronaPNGroutines)sequenceofimages.

ThedefaultselectedformatisTARGA.WhenusingmultipletimesthisfeatureduringasameVirtualDubModsessionthelastusedformatiskeptinmemoryandselectedonnextcalls.

AnewfeaturehasbeenaddedintheVideomenu.ThisfeatureletyousavethecurrentinputoroutputimagetoaBMP(usingVirtualDubBMProutines),TARGA(usingVirtualDubTARGAroutines)orPNG(usingCoronaPNGroutines)file.ThisfeatureisavailablethankstothenewSnapshotsourceframeandSnapshotoutputframeitems.

ThedefaultselectedformatisTARGA.WhenusingmultipletimesthisfeatureduringasameVirtualDubModsessionthelastusedformatiskeptinmemoryandselectedonnextcalls.ThisdefaultselectedformatissharedwiththeSaveimagesequencefeature(i.e.ifyousavedanimageinPNGformatthedefaultformatselectedwhensavingasequenceofimageswillbePNG,andvice-versa).

Streamsmenu

Startingfromversion1.5.xVirtualDubModallowtheuseofmultiplestreamsinitsstandarduse(e.g.whenwritingAVIfiles).

InthispurposetheAudiomenuhasbeenreplacedbyStreamsinthemainmenu.ThisnewmenuletyouaccessfeaturesfortheVideostreamandthelistofcurrentlyavailablestreams(Streamlist).TheReportitemletyouaccessawindowwhereareportoncurrentlyopenedfilesandavailablestreamsappears.Thisreportsgiveyougeneralandspecificinformationforeachopenedfileorstream(caracteristics,errors,...),suchasthisone:

P.S.:ifyourreportlookslikethisonethenyouarereallyunlucky:p

Multiplestreamshandling

YoucanmanagetheavailablestreamsthankstoStreams->Streamlist.The

windowthatappearslistallstreamspresentlyopenedin

VirtualDubMod(exceptthevideostreamofcourse).

Picturesandcolorsgiveyousomemoreinformationonastream.Thecurrentlyselectedstreamhasagrey(insteadofwhite)backgoundinthelist.Ifastreamisdisabled(i.e.youdon'twantitwhenmuxing)somehatchingsaredrawnonit.Youcandisableastreambydouble-clickingonit.

meansthestreamcomesfromthecurrentlyopenedfileinVirtualDubMod.Anaudiostreamswith isselectedforpreviewingwhileonewith isn't(justclickonthisimagetochangethestateofanaudiostreamregardingpreview).Notethatonlyoneaudiostreamcanbeselectedforpreviewing(youcanalsoselectnone),andthatyoucanselectadisabledstream.Sinceversion1.5.xVirtualDubModincludestheliba52library.Thankstothislibraryyoushouldbeabletodecompress(i.e.useinprevieworinFullprocessingmode)anAC3track(thestreamisconvertedtoDolbysurroundcompatiblestereobythelibrary).NotethatanoptionalsoallowyoutousePriss(internalMpegaudiodecoder)insteadofanACMonetodecodeanMP3track(seebefore).

YoucanchangetheorderofthestreamsbyusingMoveuporMovedown.You

canaddexternalsourceswiththeAddbutton,orremoveastreamfromthelistwiththeDeletebutton(notethatstreamscomingfromtheopenedfilecan'tberemovedfromthelist,toselect/deselectsuchastreamyouneedtodisableitthankstothe(Un)Selectbutton-theDeletebuttonbecomeSelectorUnselectforthiskindofstream-orbydouble-clickingonthecorrespondantiteminthelist).Currentlysupportedexternalsourcesare:

WAVfilesMP3filesAC3filesOggVorbisfilesDTSfilesSRTfiles(ASCII/Unicode)

NotethatforMP3filestheprogramlookifthereisaRIFFheaderatthebeginning(i.e.itisaWAVfilebutyouforcedtheprogramtoopenitasMP3)ortags(atthebeginningorendofthefile).Thosedata(RIFFheaderandtags)aren'tmuxedintheoutputfile.ForAC3andDTSfilestheprogramalsocheckifthereisaRIFFheaderatthebeginningofthefile.Inanycaseyouwillfindallthoseinformation(wasthereaRIFFheader,tags,andordataseenascorruptedinthefile)intheReportwindow.

AsyoucanseeUnicodefilenamesarealsosupported(inWindowsversionthatsupportit).Whenopeninganexternalsourceadialogboxshowingprogressoftheprocesswillappear.Ifthefilewasn'tvaliditwon'tbeaddedinthestreamlist.YoucanverifyallwentwellthankstotheDescripionorLengthinformationgiveninthestreamlist(ifitisfardifferentfromwhatyouexpectedmaybesomethingwentwrong).Theexternalsourcesareparsedandallnecessaryinformationarestoredinmemoryforfasterdataaccessafterwards.Theamountofmemoryuseddependsofthetypeoffileopened,anditscontent.SomeimprovementshavebeenmadesincethepreviousversionofVirtualDubMod;).Forstandard(i.e.CBR)AC3/DTSfilesitshouldbeafewhundredbytes,around1MBforanMP3source(1hours)and2MBforanOggVorbisfilewithsameduration.Subtitlesarecompletlystoredinmemorybutthisdoesn'trepresentanexcessiveamount

ofmemory:pToaccessaudiostreamsfeaturesyoucanright-clickonthecorrespondantiteminthelist.TheAudiomenuwillthenpopup.Notethatthemode(i.e.None,AVIaudio,WAVaudio)havebeenremovedfromthemenusinceuselessnow.

YoucandemuxastreamwithorwithoutaWAVheaderbyselectingSaveWAVorDemux.

OggVorbisstreamswillbeautomaticallydemuxedtoanOggfile.Textstreamswillbeautomaticallydemuxedtoasubtitle(SRT)file.Youwillhavetochooseinwhichformat(ASCII,UTF-8orUnicode)youwanttosavethesubtitles.

Thedefaultselectedformatdependsontheformatofthesubtitlesyouwanttosave.IfsubtitlesareASCIIthenthedefaultproposedformatisASCII,otherwiseitisUnicode.

Commentsandchaptershandling

YoucanaccessspecificcommentsorchaptersforastreamthankstoCommentsandChapters.ThevideocommentsandchaptersareaccessiblethankstoVideocommentsandVideochaptersintheStreamsmenu.Generallyyouputyourchaptersinthevideostream.Notethatonlythecommentsandchaptersspecifiedinthevideostreamaretakenintoaccount

whensavingtoafilethatonlyhandlecommentsorchaptersatthefilelevel(andnotatthestreamlevel).ThisisforexamplethecaseforAVIfiles(whichonlyhandlecomments).Andcommentsorchapterscomingfromsuchfileswillonlybeaddedinthevideostream.

Commentshave3properties:Type:definesthetypeofcomment(seebelow)Tag:thenameofthecomment(onlymattersforGenericcomments)Value:thevalueofthecomment

Therearevarioustypeofcomments.Typesareaconvenientwaytousethesamecommentforanyoutputformat(theoutputfunctionsautomaticallyformatacommentaccordingtoitstype).Notethatsomeoutputformatsdoesn'thandlecomments,oronlysometypes(notall).HereisthelistofcurrentlydefinedcommentsunderVirtualDubMod1.5.x:

Type Description HandledforAVI

Handledfor

OGM

Handledfor

MKVCommentspecifictoacontainer.Thiskindofcommentcanonlycomefromafile(youcan't

Specificinsertoneyourself)andwon'tbeincludedintheoutputfileunlessbothformats(inputandoutput)arethesameoryouedititstypeyourself.

* * No

Generic

Genericcomment(usethistypeofcommentandfilltheTagfieldifnoneofthetypeusedsuitsyou).

Yes Yes Yes

Software

Softwareusedtomakethefile.Notethatyoucan'teditthiscomment,andthattheoriginalvaluewon'tbekeptwhengeneratinganewfile.

Yes No Yes

Title Titleoftheclip/track(TitlepropertyinWMPlayer). Yes Yes Yes

DescriptionSubjectoftheclip/track(DescriptionpropertyinWMPlayer,exceptforAVIfile).

Yes Yes Yes

Language LanguagepropertyinWMPlayer. No Yes Yes

Author

Theartistgenerallyconsideredresponsibleforthework.Inpopularmusicthisisusuallytheperformingbandorsinger.Forclassicalmusicitwouldbethecomposer.Foranaudiobookitwouldbetheauthoroftheoriginaltext.(AuthorpropertyinWMPLayer)

Yes Yes Yes

Copyright Copyrightattribution(CopyrightpropertyinWMPlayer). Yes Yes Yes

License

Licenseinformation,eg,'AllRightsReserved','AnyUsePermitted',aURLtoalicense,etc.

No Yes Yes

CommissionerPersonororganisationthatcommissionedthesubjectofthefile.

Yes No Yes

Comment Commentontheclip/track. Yes No YesGenre Yes Yes Yes

Keywords Keywordsreferingtothefileoritssubject. Yes No Yes

Date Creationdate. No Yes No

Version

Theversionfieldmaybeusedtodifferentiatemultipleversionsofthesametracktitleinasinglecollection(e.g.remixinfo).

No Yes No

Performer

Theartist(s)whoperformedthework.Inclassicalmusicthiswouldbetheconductor,orchestra,soloists.Inanaudiobookitwouldbetheactorwhodidthereading.InpopularmusicthisistypicallythesameastheAuthorandisomitted.

No Yes Yes

Album Thecollectionnametowhichthistrackbelongs. No Yes Yes

TrackNumber

Thetracknumberofthispieceifpartofaspecificlargercollectionoralbum.

No Yes No

OrganisationNameoftheorganizationproducingthetrack(i.e.the'recordlabel').

Yes Yes No

Location Locationwheretrackwasrecorded. Yes Yes No

Contact

Contactinformationforthecreatorsordistributorsofthetrack.ThiscouldbeaURL,anemailaddress,thephysicaladdressoftheproducinglabel.

No Yes No

ISRC ISRCnumberforthetrack. No Yes YesURL No No No

(Track)Name Nameofthetrack(asdescribedinAVIorMatroskaspecs). Yes No Yes

AsyoucouldseeUnicodecommentsaresupportedheretoo(exceptforWin9xassaidatthebeginning).

Nb:pleasenotethatwhensavingtoAVIcommentsaretranslatedtotheANSIcodepage(inmytestsIwasn'tabletoproperlyincludeUnicodecommentsinanAVIfile).

Whenselecting(ormodifying)aLanguagecommentanothercombo-boxcontainingalistofpredefinedlanguageswillappear.ThislistlanguagesdefinedintheISO-639-1standard.YoucanaccessthefulllistoflanguagesdefinedintheISO-639-2standardbycheckingtheFulllanguagelistbox.Chaptersarenowhandledinanotherwindow.Timeisstoredasfractioninthecode,butintheGUItheformatusedisHH:MM:SS.mmm(HH=Hour;MM:Minute;SS:Second;mmm:Millisecond).Ifthetimeyouenteredinthefielddoesn'tfollowthisformatyouwillbewarnedwhentryingtoAddorEditachapterinformation.

YoucanuseUnicodechapternamestoo(unlessunderWin9x).

Youcanalsoimportachapterlist(.txtfile)thankstotheImportbutton.Knownfilesformatsare:

SmartRipperchapterXtractor(selectOGGformat)DVDDecrypter(selectOGGformat)

PreviewingandSaving

AfewthingshavebeenchangedintheFilemenu.

SinceyoucannowappendOGMsegments,AppendAVIsegmenthasbeenrenamedAppendsegment.Whenusingthisfeaturetheprogramwillselectthecorrectextensionoffilestoappend(i.e.AVIfileswhenyouhaveopenedanAVIfile,andOGMfileswhenyouhaveopenedanOGMfile).Commentsandchaptersshouldbeappendedcorrectlytoo.Ifcommentsareequalsduplicatedonesareremoved.Ifchaptersseemsequals(samename,andtimedifferencebetweenthemislessthan2ms)thentheduplicatedonesareremoved.

AnewPreviewVBRitemhasbeenadded.Usingthispreviewmode(insteadofthenormalPreview)shouldgivebetterresultswhentheaudiostreamyou

selectedforpreviewisVBR(especiallywhenyoustartpreviewinginthemiddleoftheclipandnotatthebeginning).

ThepreviousSaveasAVI,SaveoldformatAVI,SavesegmentedAVIandSaveasOGMitemshavebeenreplacedbyauniqueSaveaswindow.

ThenewSaveasitemletyouaccessawindowyoucanusetosaveinthedesiredformat,withthedesiredoptions.

ThiswindowmergetheoptionssothatyoucansaveintheoldAVIformat(AVI1.0,VfW1.1e;thedefaultformatbeingAVI2.0,OpenDML1.02).

Youcanselectthedesiredoutputformat(i.e.AVI,OGMorMKVfile).TheformatusedinthelastcallofSaveasisstoredintheWindowsregistryandautomaticallyselectedeachtimeyouaccessthewindow.

Youcanalsoasktosegmenttheoutputfile(accordingtoasizeornumberofframeslimit).

NotethatsuringasessionofVirtualDubModtheprogramremembersifyouusedtheJoblisttoqueuethepreviousjobornot.i.e.ifyouputajobinthelist,nexttimeyoucallSaveasthenthecorrespondingcheckboxwillbecheckedbydefault.

Thiswindowalsoremindyouofthecurrentvideomode,andtheselectedcodec(whenreencoding).Youcanchangethemodeand/orchangethecodectouseforreencoding.TheMaintabintheDubbingstatuswindowremainsunchanged:itstillshowyoustatusaboutthevideostreamandanaudiostream.Theaudiosectionactuallygiveyouinformationonthefirststreambeingmuxedintheoutputfile(i.e.itmayinfactbeatextstream).TheEstimatedtotaltimeisalsocomputedonlybytakingintoaccountthevideoandaudiostatus.However,evenifnoinformationisshownaboutotherstreams(ifany)theProjectedfilesizeandtheProgressinformationtakeintoaccountallthestreamsbeingmuxed.

FormoreinformationonthedubbingprocessanewStreamstabhavebeenadded.Thistabstillgiveyouinformationaboutthevideostream,butalsolistinformationaboutalltheotherstreams(intheorderinwhichtheyaremuxedinthefile).Thenumbergivenforeachstreamisnotanindexbuttheserialgiventothestreamintheoutputfile.Thismeansthateachnumberisuniqueforadubbingprocess,but(evenifitismostlikelytobelikethis)theyarenotnecessarily1,2,3,...(e.g.having7803,204,65214doesn'talwaysmeanthereisabug:p)HerebothProjectedfilesizeandEstimatedtotaltimetakeintoaccountallthestreams.Asyoucanseeascrollbarappearsinthetabwhenthenumberofstreamsmakeitnecessary(i.e.whenyouhavemorethan1streams-notincludingvideo-tomux).

Alltheexternalfilesyouaddedasinput(andallthevideocommentsandchapters)areremovedfromthelistwhenclosingthecurrentlyopenedvideofile.Thishappenswhenyouopenanewvideofile,whenyouselectFile->Closevideofileinthemenu,attheendofajob,and(ofcourse)whenleavingVirtualDubMod.

Sodon'topenthoseexternalfilesbeforeopeningyourvideofilebecauseinthiscaseyouwillhavetodoitagain:p

Batchmode

LastbutnotleasttheJobfilewillsavealltheinformationconcerningusedstreamsandtheiroptions(compression,...),commentsandchapters.SoyoucanstillusetheDon'trunthisjobnow;addittojobcontrolsoIcanrunitinbatchmodefeature.NotethataSkipbuttonhasbeenaddedintheJoblistwindow.OnthecontrarytotheAbortbutton(whichstopjobsprocessing)itabortthecurrentjobandgothenextone.

Alsoyourcurrentconfiguration(inputstreamsselectedandtheirassociatedcommentsandchapters)shouldbesavedwhenusingSaveprocessingsettings,andcanbereloadedwhenusingLoadprocessingsettings.

Miscellanea

TheGotolastkeyframefeature(comingfromNandub)hasbeenaddedintheEditmenu.Thisfeatureletyoujumptothenearestpreviouskeyframeprecedingacertainposition(expressedinmegabytes)inthefile.

Youcanseethepositioninfileofthecurrentlyshownframeatthebottomofthewindow.Thefilepositiononlytakeintoaccountthecurrentlyopenedvideofile,andsoisonlyworthywhenyouplantosave(inDirectstreamcopy

mode)tothesamefileformat(AVIandOGMdon'thavesimilaroverheads).

ScriptingwithVirtualDubMod

LikeVirtualDub,VirtualDubModusesSylia(developpedbyAveryLeetoo).Somespecificfunctionshavebeenaddedthough.YouwillfindbelowalistofthefunctionsyoucanuseinascriptwithVirtualDubMod.Thislistalsogiveyouthetypeofparametersyoucanusewiththefunction.Thereare2possibletypes:

:signedlonginteger(32bits)whichvaluecanbefrom-2147483648to+2147483647:astandardstring

Integerscanalsobeusedasbooleanvalues:0meansfalseandanyothervaluemeanstrue.Inthefunctionsdescribedbelowthevaluesreturned(whenany)areintegervalues.Youwillseethatsomeparametersusethefirstletteroftheirnametodescribetheirtype:

b:booleanvaluef:thisvalueisaflag(generallyaboolean)inVirtualDubsettings(e.g.'Preferences'settings)n/l:generallyalonginteger(sometimesitisusedasDWORD,i.e.unsignedlonginteger)w:generallymeansthevalueisaWORD(unsignedinteger)

Sinceversion1.5.5VirtualDubsupportUnicodefilenames.ThusfilenamesusedinthescriptfilesareactuallyconvertedtoUTF-8,andthenprocessedbythestrCifyfunctiontomakethemfitinthescriptasastring.Hereisthelistofdefinedfunctions:

Generalfunctions(VirtualDub.):Subsetfunctions(VirtualDub.subset.):Videofunctions(VirtualDub.video.):Videofiltersfunctions(VirtualDub.video.filters.):Videofiltersfunctions(VirtualDub.video.filters.instance[n].):Stream(mainlyaudio,sometimestext)functions(VirtualDub.stream[n].):

Audiofiltersfunctions(VirtualDub.stream[n].filters):Audiofiltersfunctions(VirtualDub.stream[n].filters.instance[n]):

ForcompatibilityreasonssomefunctionsthataresomehowdeprecatedinVirtualDubMod1.5.xarestillkept.ForthesamereasonsnotethatVirtualDub.audiowillbeinterpretedasVirtualDub.stream[0]forkeepingcompatibilitywithVirtualDubscripts:AllthisshouldmakeVirtualDubscriptsstillbeinterpretedcorrectlyinVirtualDubMod1.5.x.

Hereisalistofpossiblecommenttypes(seethedocumentationforadescriptionofthosetypes):

Type ValueSpecific 0x00000000Generic 0x00000001Software 0x00000002Title 0x00000003

Description 0x00000004Author 0x00000005

Copyright 0x00000006License 0x00000007

Commissioned 0x00000008Comment 0x00000009Genre 0x0000000A

Keywords 0x0000000BDate 0x0000000C

Version 0x0000000DPerformer 0x0000000EAlbum 0x0000000F

TrackNumber 0x00000010Organisation 0x00000011Location 0x00000012

Contact 0x00000013ISRC 0x00000014URL 0x00000015

(Track)Name 0x00000016Language 0x00010000

Notethatthevalue0x00010000meansauser-definedlanguage.LanguagesdefinedintheISO-639-1&2standardsusevaluesbeyond0x00010000...

Hereisalistofpossibleinputtypes:Type ValueWAV 0x0201MP3 0x0202AC3 0x0203

OggVorbis 0x0204DTS 0x0205SRT 0x0301

Hereisthelistoffunctionsthathavebeenremoved:

HereisalistofcommandlineoptionsyoucanusewhenlaunchingVirtualDubMod.

FirstofalloptionscomingfromVirtualDub:

Option Comment/s"ScriptFile.vcf" Executethespecifiedscriptfile.

/c Clearthejoblist./p"srcfile","dstfile" Addfilebatchprocesstojoblist./b"srcdir","dstdir" Adddirectorybatchprocesstojoblist.

/r Runthejoblist./x Exitwhenjobscomplete./h Disablethecrashhandler.

/w

Settheglobalg_fWineflagtotrue,whichmakesomedisplayfunctionbehavedifferently.MaybefixsomeissueswhenrunningtheprogramunderWine...

/fsck MakeVirtualDubcrash(totestthecrashhandler).

Notethatwhenspecifyingfileordirectoriestoprocesstherearenospacesbetweentheswitchandthenamespecifiedbetweenquotes.

NowoptionsaddedinVirtualDubMod:

Option Comment

/log

Generatesthevdenc.loglogfilewhenrecompressingvideo.Eachlinegiveinformationaboutaframe(firstnumbergivesthekindofframe-1forkeyframe,0forothers-,thesecondnumbergivethesizeofthecompressedframe.

/log"LogFile.log" Withthisoneyoucanspecifywherewillbewrittenthelogfile.

/nowrite ThisonepreventsVirtualDubModfromactuallywritingthevideodataintheoutputfile.

thelogandnowriteoptionshavebeenproposedandaddedbyjonny,authorofDivX5Enc.

VirtualDubModFAQ

WhatdoIneedtorunVirtualDubMod?ReadthisifVirtualDubModdoesn'trunforsomereason!GetthelatestreleaseandunpackitsomewhereonyourHD.GetthelatestDllpackandunpackitinthesamedirectory.Ifyoudon'thavealltheVirtualDubDlls(sylia.dll,vdrslink.dll,etc.)getthem(eithercomingfromtheofficialVirtualDub,orgogetthelatestspecialDllpackwiththosefilesfromSourceForge).

IfyouwantAviSynthsyntaxcoloringyoualsoneedAviSynthLexer.lexer.Syntaxcoloringforcommandsfromexternalplug-insworkssinceAviSynth2.5.2.

Therewillbealsosometranslationpacksavailable.

Ifoundabug/Iwanttoproposethisfeature.WhatshouldIdo?

1. AllbugreportsandfeaturerequestsgototheTrackersonourprojectpageonSourceForge.Youdon'tneedtoregistertheretobeabletoreport,butdoingsohasabigadvantage.Wheneversomebodycommentsonyourrequest,youwillgetanotificationemail,soyouwillasapknowwhensomethingisup.

2. Makesureyourrequesthasn'tbeenreportedbefore!We(thedevelopers)closetheitemsthatareresolved,somakesureyouselect"All"inthestatusboxontherespectivetracker(normallyonlytheopenitemsareshown).PleasetakealsothetimetolookatthecurrentChanglog.YoucanfindthisviatheSFCVSbrowser(CVS->BrowseCVSRepository->VirtualDubMod15->VirtualDub->mod->res->ChangesMod.txt(clickontheversionnumberrightofthefilename))

3. Thestatusofallbugsregarding1.4.xhasbeenchangedto'Pending'afterthereleaseof1.5.x.Thiswasdonetogetridofstuffthatdoenstapplyanymoreduetothemajorchanges.Ifyoufindyourbugtostillexist,pleasechangeitsstatusbacktoopeninsteadofsubmittingitanew.

Ofcourseyoucanalsopostyourstuffintheforumfordiscussion,butalwaysaddittotherespectivetracker,otherwisebookkeepingishellforusanditemsmightslipout.Weallareonlyhumans,sowemightoverlookimportantstuffif

it'snotcollectedatacentralpoint.

Wherehastheaudiomenugoneto?Rightmousebuttoninthestreamlist.

HowdoIuse'OpenviaAviSynth'?ThisallowsyoutoopenanyAVISynthcompatiblevideofilebyautomaticallygeneratingasuitablescriptbyaselectabletemplate.Thesetemplatesgointothe'templates'directoryinyourVirtualDubdirectory.TemplatesyntaxisthesameasforAVISynthesizer(Iincludedreadme_AVISynthesizer.txtbecauseasofthiswritingtheAVISynthesizerhomepageisnotavailable).Youcanchoosethedefaulttemplateshownintheopendialogbystartingthetemplatedescriptionwith"Default"(notethatthetemplatefilenamehasnothingtodowiththis).Thisfunctionhasnointelligencewhatsoever!You'reresponsibletochoosetherighttemplateforthefile(egaSegmentedAVISourcetemplateformulti-segmentavisorgivingtherightfpstoDirectShowSource)ForthistoworkflawlesslyyouneedAVISynth2.05andacorrectlysetplugindirectory.(Createaregistrykeycalled"PluginDir"inHKEY_LOCAL_MACHINE\Software\Avisynth\)Aworkaroundifyoudon'twanttodothisisaddingtheneededLoadPluginlinesintothetemplates.

Whyisusingvbrmp3inavisabadidea?WediscussedthisissueatlengthinircandCyrius(suiryc)gaveaprettygoodexplanation:

[21:33]<Belgabor|Home>cyrius,whatdidyourexperimetstell?

[21:33]<Suiryc>Belgabor|Home:IthinkIknowknowwhyVBRisnotgood,andalsowhyNando'shackworks(somehow)

[21:33]<Suiryc>s/know/now

[21:33]<Belgabor|Home>ok,tellme

[21:33]<Suiryc>:)

[21:34]<Suiryc>firstofallthereare2'headers'intheAVI(audio)stream

[21:34]<Belgabor|Home>Ihavethefeelingineedtohammerthatdownsomethroatsoon:p

[21:34]<ChristianHJW>lol

[21:34]<Suiryc>firstoneisageneralone(thesamestrutureisusedforeachtrack)

[21:35]<Suiryc>AVISTREAMINFO

[21:35]<Suiryc>(IIRC...thereshoulduseshorternames...)

[21:35]<Belgabor|Home>lol

[21:37]<spyder482>ChristianHJW:Iwon'tbemovingforafewmonthsstillthough

[21:37]<Suiryc>thisonetellhowmanyframesthereareinthestream

[21:37]<Suiryc>andwhatistherateoftheframes

[21:37]<Suiryc>thankstodwRate&dwScalefields

[21:37]<Belgabor|Home>gotthat

[21:38]<Suiryc>italsocontainsafieldsayingthesizeof1frame

[21:38]<Suiryc>ifVBR,thenitissetto0,otherwiseitissettothecorrectvalue

[21:38]<Belgabor|Home>dwSampleSize

[21:39]<Suiryc>yep

[21:39]<Suiryc>thenthereisaheaderspecifictotheaudiostream(basedonWAVEFORMATEX)

[21:39]<Suiryc>thisonetellthesamplerate(44100,48000,...)

[21:39]<Suiryc>thebyterate

[21:39]<Suiryc>theformat(wFormatTag)

[21:40]<Suiryc>andespeciallycontainsafieldnamesnBlockAlign

[21:40]<Suiryc>nBlockAligntellhowmanybytesanaudioframecontains

[21:40]<Suiryc>_BUT_

[21:40]<Belgabor|Home>Andthatmusntbe0

[21:40]<Suiryc>cannotbesetto0

[21:40]<spyder482>somuchworkforAVI...

[21:40]<Suiryc>:)

[21:40]<Belgabor|Home>ok,ithinkigetthepicture

[21:40]<Suiryc>oksolet'scontinue

[21:41]<Belgabor|Home>ok

[21:41]<ChristianHJW>allwithyouguys...

[21:41]<Suiryc>inNandubhereiswhathappenswithanMP3stream(VBRone)

[21:42]<Suiryc>NandosetdwRatetothesamplerate(44100,48000,...)

[21:42]<spyder482>don'tyoutwohaveachannelforthis?:)

[21:42]<Suiryc>spyder482:shutup:P

[21:42]<Suiryc>andsetdwScaleto1152

[21:42]<spyder482>lol

[21:42]<Belgabor|Home>no,theotheroneisjustforlurking

[21:42]<Belgabor|Home>:p

[21:42]<Suiryc>:]

[21:42]<spyder482>hehe

[21:43]<Suiryc>andsetnBlockAlignto1152too

[21:43]<Suiryc>then,whenmuxingitonlytreatwholeMP3frames

[21:43]<Suiryc>(i.e.eachMP3frameisinitsownChunk)

[21:44]<Suiryc>youstillfollow?

[21:44]<md`>whohasdonethempeg2importpartofvdmod?

[21:44]<Belgabor|Home>ok,onemp3frameiswhat?

[21:44]<Belgabor|Home>pulco-citron

[21:44]<md`>hmpf

[21:44]<spyder482>pulco-citron

[21:44]<spyder482>oh

[21:44]<spyder482>:)

[21:45]<md`>whydoeshegenerated2vanddontlettheuserdecidetopickone...

[21:45]<Belgabor|Home>dunno

[21:45]<md`>ifthereisonealready

[21:45]<md`>hmmm

[21:45]<Suiryc>Belgabor|Home:anMpeg1-Layer3frameistheshorterblockofdatayoucanuse

[21:45]<ChristianHJW>letSuirycfinishguys..please

[21:45]<md`>yesok

[21:45]<Belgabor|Home>ok

[21:45]<spyder482>ChristianHJW:check#virtualdub

[21:45]<Suiryc>itcontainsanheadersayingwhatisintheframe,andthenthedata(audio)

[21:46]<ChristianHJW>wehavetoknowwhatswronginAVItobeabletoadvertisematroska;-)

[21:46]<Belgabor|Home>thisishowmuchdata?

[21:46]<Suiryc>somehow1MP3frame~1videoframe

[21:46]<Belgabor|Home>ChristianHJW:lol

[21:46]<Suiryc>thesizeofaframedependsontheMP3settings

[21:46]<Suiryc>(i.e.bitrate,...)

[21:46]<Belgabor|Home>ok

[21:47]<Belgabor|Home>isitfixedforafileorvaribleinvbr?

[21:47]<Suiryc>howeveraMpeg1-layer3frameconatins1152samples

[21:47]<Suiryc>thesizeofaframeisvariable

[21:47]<Suiryc>eveninCBR

[21:48]<Suiryc>(e.g.frameswillbeof417or418bytes)

[21:48]<Belgabor|Home>ok,but1152istheupperlimit?

[21:48]<Suiryc>becauseafixedbtratemustbeachieved

[21:48]<Suiryc>1152isthenumberofsamplesaframecontains

[21:48]<Suiryc>eachframe(whateveritssizemaybe)contains1152samples

[21:49]<Belgabor|Home>oic

[21:49]<Suiryc>solet'scontinue;)

[21:49]<Suiryc>eachframecontains1152samples

[21:49]<Belgabor|Home>ok

[21:49]<Suiryc>andtherateofthestream(inAVISTREAMINFO)hasbeensetto:

[21:49]<Suiryc>dwRate/dwScale=SampleRate/1152

[21:50]<Suiryc>sinceeachFramecontains1152itisequaltothe'framerate'

[21:50]<Suiryc>(asforvideo)

[21:50]<Belgabor|Home>ok,ithinkigotthat

[21:50]<Suiryc>nowyoumustrecallthateachframeisinitsownAVIchunk

[21:50]<Belgabor|Home>ok

[21:50]<Suiryc>soitisalsothe'chunkrate'

[21:51]<Suiryc>sohereisnowwhathappens(itismostlikelywhathappens)whenplayingthefileinWindowMediaPlayer

[21:51]<Belgabor|Home>ic

[21:51]<Suiryc>WMPwillgetbothheaders

[21:52]<Suiryc>whichwillsaytoitthattherateofthestreamisSampleRate/1152

[21:52]<Belgabor|Home>gimmeasec,brb

[21:52]<Suiryc>andthateachaudioframeis1152byteslong(nBlockAlign)

[21:52]<Suiryc>k

[21:53]<Belgabor|Home>back

[21:54]<Suiryc>oksoWMPbelieveeachframeis1152byteslong

[21:54]<Belgabor|Home>yeah

[21:54]<Suiryc>whichisnotthecase(generallyframesarearound400byteslongwith128kbpsstream)

[21:55]<Suiryc>but

[21:55]<Belgabor|Home>yeah,gotthatmuch

[21:55]<Suiryc>nowyouarereadingdatainthefile

[21:55]<Suiryc>andWMPneedstoknowwhentoreadtheaudio

[21:55]<Suiryc>(i.e.towhichtimecorrespondanaudioframe)

[21:56]<Suiryc>todosoitwilllookatallthepreviousaudiochunksinthefile

[21:56]<Suiryc>foreachshunkitdividethesize(inbytes)ofthechunkbynBlockAligntoknowhowmanyframestherewereinthechunk

[21:56]<Belgabor|Home>ok

[21:56]<Suiryc>s/shunk/chunk

[21:57]<Belgabor|Home>ok

[21:57]<Suiryc>(sinceeverytoolsdealingwiththestreammustcutonnBlockAlignboundaries)

[21:57]<Suiryc>sinceeachchunkisshorterthan1152bytes(nBlockAling)itshoulget0

[21:57]<Suiryc>butthisisnotpossible

[21:58]<Suiryc>sincetoolsworkonblocksofnBlockAlignbytes,itmustassumethanthereisatleast1frameinthechunk

[21:58]<Suiryc>(evenifthechunkisshorter)

[21:59]<Suiryc>soforeachchunkitfindthereis1frameinit

[21:59]<Suiryc>whichisreallythecase(eachmp3frameisinitsownchunk)

[21:59]<Suiryc>soWMPgotthecorrectnumberofmp3framesplayedsofar

[22:00]<Suiryc>andsinceithasthecorrectrate(eachframecontains1152samples,andtherateofthestreamisSampleRate/1152)

[22:00]<Suiryc>italsogotthecorrecttimecodefortheframe

[22:00]<Belgabor|Home>ok

[22:00]<Suiryc>resultinginaperfectlysynchedMP3stream

[22:01]<Suiryc>IwasleadtothisconclusionwithoutdebuggingWMPwhileplaying;)butwithsometestsImade:

[22:02]<Suiryc>IchangedthedwScalevalue(withorwithoutthenBlockAlignvalue)

[22:02]<Suiryc>butthisresultedinotuofsynchissues(audioplayingtoofast/slow)

[22:02]<Suiryc>out*

[22:02]<Suiryc>IchangedthenBlockAlignvaluie:

[22:03]<Suiryc>settingitto1andthenIhaveoutofsynchissuestoo

[22:03]<Suiryc>butsettingit2304andIstilhaveaperfectlysynchedstream

[22:03]<Belgabor|Home>ok

[22:04]<Suiryc>soinfactthe1152valueinnBlockAligncouldbeanythingelse

[22:04]<Suiryc>_but_

[22:04]<Suiryc>mustbehigherthanthesizeofanmp3frame

[22:04]<Belgabor|Home>ok,whathappensifyousetitto0?

[22:04]<Suiryc>lol

[22:05]<Suiryc>ifyousetitto0thenWMPwon'tplaythestream(theiconforaudioisdisabledlikeifthereisnoaudiointhefile)

[22:05]<Suiryc>sonoVBR;)

[22:05]<Belgabor|Home>ok

[22:06]<Belgabor|Home>sothefailureisinpriciplenotinavi,butintheWAVEFORMATEXheader

[22:06]<Suiryc>yep

[22:06]<Suiryc>butsincetheAVIwilluseWAVEFORMATEXforaudioheaders,itisstillafailureinAVIspecs

[22:07]<Belgabor|Home>doyouhavetheresemblanceofanideawhyvbrmp3fails?

[22:07]<Belgabor|Home>yep

[22:07]<Suiryc><Belgabor|Home>doyouhavetheresemblanceofanideawhyvbrmp3fails?<--youmeanwhyitisnotgood?

[22:08]<Belgabor|Home>yep,whyitfailssometimes

[22:08]<ChristianHJW>thatswhatiaminterestedinalso

[22:08]<Suiryc>wellinthecaseofWMP,itwilldividethechunksizebynBlockAlign

[22:08]<Suiryc>(that'swhatIthink,sincethesynchisgood)

[22:08]<Suiryc>andwillsetitto1ifthechunksizeistoosmall

[22:09]<Suiryc>butthereisanotherwaytocomputetimecode

[22:09]<Suiryc>(assumingthatyouhaveCBRofcourse)

[22:09]<Suiryc>youtakethetotalbytesinpreviouschunks

[22:09]<Suiryc>anddivideitbynblockAlign

[22:10]<Belgabor|Home>whichfailsmiserablyforthevbrhack

[22:10]<Suiryc>ofcourseinthiscaseyougetacompletlywrongvaluesincemp3framesarenot1152byteslnog

[22:10]<Suiryc>yep

[22:10]<Suiryc>otehrtoolsmayalsoassumethatthechunkisnotvalid(corrputed)sinceitssizeisshorterthannBlockAlign

[22:11]<Belgabor|Home>ok,thatsthefailureinprinciple,butwhyaresomefilesbroken?

[22:12]<Suiryc>whatfiles?

[22:12]<Suiryc>broken?whatdoyoumeanbybroken?

[22:13]<Belgabor|Home>ihadsomevbrmp3aviswhichseemedlikehavingdivx3freezeframesbutwhereokwhendemuxed

[22:13]<Suiryc>dunno

[22:13]<Suiryc>maybeaproblemwiththedecoder

[22:14]<Belgabor|Home>ok,wellthatclearedthingsupabit

[22:14]<Belgabor|Home>thx:)

[22:14]<Suiryc>:)

[22:14]<Suiryc>btwtheremaybeproblemswithNandubcode;)

[22:14]<Suiryc>because:

[22:14]<Suiryc>1.layer1streamsonlyhave384samplesperframe

[22:15]<Suiryc>2.IIRCwithveryhighbitratesanmp3framecanbehigherthan1152bytes;)

[22:15]<Suiryc>s/higher/bigger

[22:16]<Suiryc>(themaxsizeisnear2000bytesIIRC)

[22:16]<Belgabor|Home>ok,sonBlockAlignshouldbe>2000

[22:17]<Suiryc>sodependingonthewaydividingisused(roundingtofloororceilornearestvalue)

[22:17]<Suiryc>andthemaxsizeofaframe,itmayfindthereare2framesinachunkwherethereisonly1frame

[22:17]<Belgabor|Home>ok,igotthat

[22:18]<Suiryc>butthisisforreallyhighbitrates...

[22:18]<Suiryc>lemmecheck...

[22:19]<Belgabor|Home>whatwouldhappenifweputtwoframesinonechunk?akasetdwRate=2*samplerateandsoon?

[22:20]<Belgabor|Home>no,nottwo,justdoublethevalues?

[22:21]<Suiryc>ifyoudoublethevaluetherateoftheaudiowillbechangedaccordingly

[22:21]<Suiryc>sotokeepitcorrectyouwouldhavetoput2mp3framesineachchunk

[22:22]<Suiryc>butthenyouwouldmostlikelygobeyondthe1152bytesperchunk

[22:22]<Suiryc>andincreasethechancestogenerateoutofsynchproblems

[22:23]<Belgabor|Home>letmerethink

[22:24]<Suiryc>changingdwRateanddwScaleonlyaffectstherateofthestream

[22:25]<Suiryc>multiplyingdwRateby2=>audioplay2timesfaster

[22:25]<Suiryc>multiplyingdwScaleby2=>audioplay2timesslower

[22:25]<Belgabor|Home>ifwedoubledwrate,dwscale,nblockalignanddwsamplesize?

[22:25]<Suiryc>multipylingboth=>nochange

[22:25]<Suiryc>dwSampleSizeissetto0

[22:26]<Belgabor|Home>ahok,soskipthat

[22:26]<Suiryc>(dwRate,dwScale)andnBlockAlignarenotlinked

[22:26]<Suiryc>youcanuseahighervalueinnBlockAlign

[22:27]<Suiryc>(likethe2304Itested)

[22:27]<Belgabor|Home>nvertheless,ifwedoubleallthree,shouldntitbesafeforlargermp3frames?

[22:27]<Suiryc>thiswon'tchangeanythinginthecaseofWMPbecausesomethinglowerthan1152dividedby1152or2304willstillberoundedto0

[22:27]<Suiryc>Belgabor|Home:thiswouldbesafer

[22:28]<Suiryc>butwouldcauseevenmoretroublesinappsthatdon'tworkthesamewaythanNandub&WMP

[22:28]<Suiryc>Ithinksomeappssometimescheckavalueof1152toknowitwasmadebyNandub

[22:28]<Belgabor|Home>ok,iseethepoint

[22:29]<Belgabor|Home>faultyconceptstaysfaulty

[22:33]<Suiryc>kIchecked

[22:33]<Suiryc>keeping1152shoudln'tcausetoomuchproblems

[22:33]<Suiryc>forMpeg1-Layer2/3themasisnear1750byteslong

[22:34]<Suiryc>therecouldbeproblemswithMpeg2/2.5-layer2/3

[22:34]<Suiryc>wherea160kbpsstreamof8kHzhaveframesof2881byteslongatmost

[22:35]<Suiryc>anywayIdon'tthinkpeopleusethiskindofstream;)

[22:36]<ChristianHJW>highlyunlikely..

[22:51]<Suiryc>nite

[22:52]*Suirychasleft#matroska

Thecentralproblemis(imho)itworksnow.AssoonasM$changestheroundingfunctionintheiraviparserfromceiltosomethingelse,itwillstopworking.

top related