To declare filter in SVG file

You use filter tag, precise units and filter effects region

<defs>
<filter id="MyFilter" filterUnits="userSpaceOnUse" x="0" y="0" width="400" height="400">
.........
</filter>
</defs>

In filter tag, you put filter primitive to use
You can redefine filter primitive effects region, give name to result of primitive, use as source ( in and in2 attributs ) result of other primitive or SourceGraphic, SourceAlpha, BackgroundImage, BackgroundAlpha, FillPaint, StrokePaint

By example:

<filter id="MyFilter" filterUnits="userSpaceOnUse" x="0" y="0" width="400" height="400">
    <feImage xlink:href='#MyImage' result='image'/>
    <feSpecularLighting id="fsl" lighting-color='white' result='spot' specularConstant ='1' specularExponent='16'> 
        <feSpotLight id='fsp' x='200' y='200' z='200' pointsAtX='200' pointsAtY='100' pointsAtZ='0' specularExponent='16' limitingConeAngle='45' />
    </feSpecularLighting>
    <feComposite id='fcp' in='image' in2='spot' operator="arithmetic" k1="0.5" k2="1" k3="1" k4="0"/>
</filter>

In this example, we have:
feImage primitive refers to a graphic external, which is loaded or rendered into an RGBA raster and becomes the result of the filter primitive with name "image"
feSpecularLightning primitive using feSpotLight to define light source create RGBA raster with name "spot"
feComposite perform the composition of the two input images ( "image" and "spot" )